function indexUpuChange(e, t) {
    function a() {
        var e = n.children("ul").children("li"),
        r = e.height();
        i.prepend(e.last().clone()).css({
            top: r * -1
        });
        var s = n.children("ul").children("li").first();
        s.css({
            opacity: 0
        }),
        n.children("ul").children("li").last().fadeOut(t,
        function() {
            $(this).remove(),
            s.fadeTo(800, 1),
            i.animate({
                top: 0
            },
            t)
        })
    }
    var n = $(".column-bigPhoto .column-texe"),
    r = $(".column-bigPhoto"),
    i = n.children("ul"),
    s = r.find("i"),
    o,
    u;
    u = setInterval(a, e * 1 + t * 2),
    r.mouseenter(function() {
        clearInterval(u),
        s.stop().animate({
            right: 0
        },
        300)
    }),
    r.mouseleave(function() {
        u = setInterval(a, e * 1 + t * 2),
        s.stop().animate({
            right: "-76px"
        },
        300)
    })
}
function sidebarRoll() {
    function r() {
        var t = $(document).scrollTop();
        t > e - 10 ? $("#sidebar").find("ul").css("top", 10) : $("#sidebar").find("ul").css("top", e - t)
    }
    function i() {
        var e = $(window).width(),
        t = e - n;
        $("#sidebar").find("li").each(function() {
            var t = $(this).find("span"),
            n = e - $(this).offset().left - $(this).width() - t.width() - 30;
            n > 0 ? $(this).removeClass("sidebar-hint-left") : $(this).addClass("sidebar-hint-left")
        })
    }
    var e = parseInt($("#sidebar").find("ul").css("top")),
    t = parseInt($("#sidebar").find("ul").css("right")),
    n = $("#sidebar").width() - t * 2;
    r(),
    $(window).scroll(function() {
        r()
    }),
    i(),
    $(window).resize(function() {
        i()
    })
}
function messageListHover() {
    $(".message-ul > li").each(function() {
        var e = $(this),
        t = e.find(".message-title"),
        n = e.find(".message-details"),
        r = n.find(".message-other-hide"),
        i = t.find(".message-country").find("b").find("a"),
        s = null;
        t.click(function() {
            n.length == 1 && n.stop(!0, !0).slideToggle()
        }),
        n.length == 1 && r.click(function() {
            n.stop(!0, !0).slideToggle()
        }),
        t.find(".message-country").find("a").click(function() {
            event.stopPropagation()
        }),
        i.mousemove(function() {
            clearInterval(s);
            var e = $(this).parent().siblings("div");
            $(this).parent().siblings("span").hide(),
            e.stop().fadeIn(),
            t.find(".message-country").children("div").children("div").not(e).stop().fadeOut("300",
            function() {
                $(this).siblings("span").show()
            })
        }),
        i.mouseout(function() {
            var e = $(this);
            s = setTimeout(function() {
                e.parent().siblings("div").stop().fadeOut("300",
                function() {
                    e.parent().siblings("span").show()
                })
            },
            200)
        }),
        i.parent().siblings("div").mousemove(function() {
            clearInterval(s),
            $(this).siblings("span").hide(),
            $(this).stop().fadeIn()
        }),
        i.parent().siblings("div").mouseout(function() {
            var e = $(this);
            e.stop().fadeOut("300",
            function() {
                e.siblings("span").show()
            })
        })
    })
}
function scrollSlide(e, t) {
    var n = $(e).attr("href"),
    r = 0;
    return n != "#" && (r = $(n).offset().top),
    $("html,body").animate({
        scrollTop: r
    },
    t),
    !1
}
function backTopShow() {
    function e() {
        var e = $(window).width();
        e > 1190 && $(".backTop").length > 0 ? $(".backTop").hide() : $(".backTop").show()
    }
    function t() {
        var e = $(document).scrollTop(),
        t = $(window).width(),
        n = $(window).height(),
        r = $(".sidebar-backTop");
        t > 1190 && e > n ? r.stop().fadeIn() : r.stop().fadeOut()
    }
    e(),
    $(window).scroll(function() {
        t()
    }),
    $(window).resize(function() {
        e()
    })
}
function messagePopupSelectTabs() {
    var e = $(".message-popup-select-ul li"),
    t = $(".message-popup-nationBox "),
    n = $(".message-popup-nation "),
    r = $(".message-popup-prompts");
    e.click(function() {
        var i = $(this),
        s = i.index(),
        o = i.attr("data-on");
        o == undefined || o.indexOf("on") < 0 ? (e.attr("data-on", "on").not(i).attr("data-on", ""), t.show(), n.hide().eq(s).show(), r.hide()) : (e.attr("data-on", ""), t.hide(), n.hide(), r.show())
    })
}
function NationRulesTabs(e, t, n, r, i) {
    var s = $(e).children(t);
    s.mouseover(function() {
        var e = $(this),
        s = e.index(),
        o = e.parent().siblings(n).children(r);
        e.addClass(i).siblings(t).removeClass(i),
        o.hide().not(o.eq(s)).show(),
        o.eq(s).show().siblings(r).hide()
    })
}
function IFrameLanguageSwitching() {
    var e = $(".message-head-language"),
    t = e.children(".message-head-language-list"),
    n;
    e.hover(function() {
        clearInterval(n),
        t.show()
    },
    function() {
        n = setTimeout(function() {
            t.hide()
        },
        500)
    }),
    t.hover(function() {
        clearInterval(n),
        $(this).show
    },
    function() {
        n = setTimeout(function() {
            t.hide()
        },
        500)
    })
}
function guideJudgeShow(e, t) {
    var n = $.cookie("v4_Guide");
    if (typeof n == "undefined") n = {
        index: !0,
        result: !0,
        result_detail: !0
    };
    else try {
        n = $.parseJSON(n)
    } catch(r) {
        n = {
            index: !0,
            result: !0,
            result_detail: !0
        }
    }
    var i = !0;
    t === "index" && (i = n.index),
    t === "result" && (i = n.result),
    t === "result_detail" && (i = n.result_detail),
    typeof i == "undefined" && (i = !0);
    if (i) {
        var s = $(document.body).outerHeight(!0),
        o = $(window).height();
        o - s > 0 ? $(".guide-shade").height(o).show() : $(".guide-shade").height(s).show(),
        $(".guide-close,.guide-content").show(),
        $(".guide-close").click(function() {
            t === "index" && (n.index = !1),
            t === "result" && (n.result = !1),
            t === "result_detail" && (n.result_detail = !1),
            n = $.toJSON(n),
            $(".guide-shade,.guide-close,.guide-content").hide(),
            $.cookie("v4_Guide", n, {
                path: "/",
                expires: 3650
            })
        })
    } else $(".guide-shade,.guide-close,.guide-content").hide()
}
function browserUpgrade() {
    var e = {},
    t = navigator.userAgent.toLowerCase(),
    n; (n = t.match(/msie ([\d.]+)/)) ? e.ie = n[1] : (n = t.match(/firefox\/([\d.]+)/)) ? e.firefox = n[1] : (n = t.match(/chrome\/([\d.]+)/)) ? e.chrome = n[1] : (n = t.match(/opera.([\d.]+)/)) ? e.opera = n[1] : (n = t.match(/version\/([\d.]+).*safari/)) ? e.safari = n[1] : 0;
    var r = $.cookie("v4_browser");
    typeof e.ie != "undefined" && e.ie < 9 && typeof r == "undefined" && ($(".updateHint").show(), $(".updateHint a").click(function() {
        $(".updateHint").hide(),
        $.cookie("v4_browser", "true", {
            path: "/",
            expires: 3650
        })
    }))
}
function post_titleBarStick() {
    function e() {
        var e = $(".schedule-box").offset().top,
        t = $(window).width(),
        n = $(document).scrollTop();
        if (n - e > 0) if (t >= 1190) $(".schedule").addClass("schedule-on").removeClass("schedule-left"),
        $(".message-header").addClass("message-header-on").removeClass("message-header-left"),
        $(".schedule,.message-header").attr("style", "");
        else {
            $(".schedule").addClass("schedule-left").removeClass("schedule-on"),
            $(".message-header").addClass("message-header-left").removeClass("message-header-on");
            var r = $(document).scrollLeft();
            $(".schedule,.message-header").attr("style", "left:" + r * -1 + "px")
        } else $(".schedule").removeClass("schedule-left schedule-on"),
        $(".message-header").removeClass("message-header-left message-header-on"),
        $(".schedule,.message-header").attr("style", "")
    }
    e(),
    $(window).scroll(function() {
        e()
    }),
    $(window).resize(function() {
        e()
    })
} (function(e, t) {
    function i(t, n) {
        var r, i, o, u = t.nodeName.toLowerCase();
        return "area" === u ? (r = t.parentNode, i = r.name, !t.href || !i || r.nodeName.toLowerCase() !== "map" ? !1 : (o = e("img[usemap=#" + i + "]")[0], !!o && s(o))) : (/input|select|textarea|button|object/.test(u) ? !t.disabled: "a" === u ? t.href || n: n) && s(t)
    }
    function s(t) {
        return e.expr.filters.visible(t) && !e(t).parents().addBack().filter(function() {
            return e.css(this, "visibility") === "hidden"
        }).length
    }
    var n = 0,
    r = /^ui-id-\d+$/;
    e.ui = e.ui || {},
    e.extend(e.ui, {
        version: "1.10.4",
        keyCode: {
            BACKSPACE: 8,
            COMMA: 188,
            DELETE: 46,
            DOWN: 40,
            END: 35,
            ENTER: 13,
            ESCAPE: 27,
            HOME: 36,
            LEFT: 37,
            NUMPAD_ADD: 107,
            NUMPAD_DECIMAL: 110,
            NUMPAD_DIVIDE: 111,
            NUMPAD_ENTER: 108,
            NUMPAD_MULTIPLY: 106,
            NUMPAD_SUBTRACT: 109,
            PAGE_DOWN: 34,
            PAGE_UP: 33,
            PERIOD: 190,
            RIGHT: 39,
            SPACE: 32,
            TAB: 9,
            UP: 38
        }
    }),
    e.fn.extend({
        focus: function(t) {
            return function(n, r) {
                return typeof n == "number" ? this.each(function() {
                    var t = this;
                    setTimeout(function() {
                        e(t).focus(),
                        r && r.call(t)
                    },
                    n)
                }) : t.apply(this, arguments)
            }
        } (e.fn.focus),
        scrollParent: function() {
            var t;
            return e.ui.ie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? t = this.parents().filter(function() {
                return /(relative|absolute|fixed)/.test(e.css(this, "position")) && /(auto|scroll)/.test(e.css(this, "overflow") + e.css(this, "overflow-y") + e.css(this, "overflow-x"))
            }).eq(0) : t = this.parents().filter(function() {
                return /(auto|scroll)/.test(e.css(this, "overflow") + e.css(this, "overflow-y") + e.css(this, "overflow-x"))
            }).eq(0),
            /fixed/.test(this.css("position")) || !t.length ? e(document) : t
        },
        zIndex: function(n) {
            if (n !== t) return this.css("zIndex", n);
            if (this.length) {
                var r = e(this[0]),
                i,
                s;
                while (r.length && r[0] !== document) {
                    i = r.css("position");
                    if (i === "absolute" || i === "relative" || i === "fixed") {
                        s = parseInt(r.css("zIndex"), 10);
                        if (!isNaN(s) && s !== 0) return s
                    }
                    r = r.parent()
                }
            }
            return 0
        },
        uniqueId: function() {
            return this.each(function() {
                this.id || (this.id = "ui-id-" + ++n)
            })
        },
        removeUniqueId: function() {
            return this.each(function() {
                r.test(this.id) && e(this).removeAttr("id")
            })
        }
    }),
    e.extend(e.expr[":"], {
        data: e.expr.createPseudo ? e.expr.createPseudo(function(t) {
            return function(n) {
                return !! e.data(n, t)
            }
        }) : function(t, n, r) {
            return !! e.data(t, r[3])
        },
        focusable: function(t) {
            return i(t, !isNaN(e.attr(t, "tabindex")))
        },
        tabbable: function(t) {
            var n = e.attr(t, "tabindex"),
            r = isNaN(n);
            return (r || n >= 0) && i(t, !r)
        }
    }),
    e("<a>").outerWidth(1).jquery || e.each(["Width", "Height"],
    function(n, r) {
        function u(t, n, r, s) {
            return e.each(i,
            function() {
                n -= parseFloat(e.css(t, "padding" + this)) || 0,
                r && (n -= parseFloat(e.css(t, "border" + this + "Width")) || 0),
                s && (n -= parseFloat(e.css(t, "margin" + this)) || 0)
            }),
            n
        }
        var i = r === "Width" ? ["Left", "Right"] : ["Top", "Bottom"],
        s = r.toLowerCase(),
        o = {
            innerWidth: e.fn.innerWidth,
            innerHeight: e.fn.innerHeight,
            outerWidth: e.fn.outerWidth,
            outerHeight: e.fn.outerHeight
        };
        e.fn["inner" + r] = function(n) {
            return n === t ? o["inner" + r].call(this) : this.each(function() {
                e(this).css(s, u(this, n) + "px")
            })
        },
        e.fn["outer" + r] = function(t, n) {
            return typeof t != "number" ? o["outer" + r].call(this, t) : this.each(function() {
                e(this).css(s, u(this, t, !0, n) + "px")
            })
        }
    }),
    e.fn.addBack || (e.fn.addBack = function(e) {
        return this.add(e == null ? this.prevObject: this.prevObject.filter(e))
    }),
    e("<a>").data("a-b", "a").removeData("a-b").data("a-b") && (e.fn.removeData = function(t) {
        return function(n) {
            return arguments.length ? t.call(this, e.camelCase(n)) : t.call(this)
        }
    } (e.fn.removeData)),
    e.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),
    e.support.selectstart = "onselectstart" in document.createElement("div"),
    e.fn.extend({
        disableSelection: function() {
            return this.bind((e.support.selectstart ? "selectstart": "mousedown") + ".ui-disableSelection",
            function(e) {
                e.preventDefault()
            })
        },
        enableSelection: function() {
            return this.unbind(".ui-disableSelection")
        }
    }),
    e.extend(e.ui, {
        plugin: {
            add: function(t, n, r) {
                var i, s = e.ui[t].prototype;
                for (i in r) s.plugins[i] = s.plugins[i] || [],
                s.plugins[i].push([n, r[i]])
            },
            call: function(e, t, n) {
                var r, i = e.plugins[t];
                if (!i || !e.element[0].parentNode || e.element[0].parentNode.nodeType === 11) return;
                for (r = 0; r < i.length; r++) e.options[i[r][0]] && i[r][1].apply(e.element, n)
            }
        },
        hasScroll: function(t, n) {
            if (e(t).css("overflow") === "hidden") return ! 1;
            var r = n && n === "left" ? "scrollLeft": "scrollTop",
            i = !1;
            return t[r] > 0 ? !0 : (t[r] = 1, i = t[r] > 0, t[r] = 0, i)
        }
    })
})(jQuery),
function(e, t) {
    var n = 0,
    r = Array.prototype.slice,
    i = e.cleanData;
    e.cleanData = function(t) {
        for (var n = 0,
        r; (r = t[n]) != null; n++) try {
            e(r).triggerHandler("remove")
        } catch(s) {}
        i(t)
    },
    e.widget = function(t, n, r) {
        var i, s, o, u, a = {},
        f = t.split(".")[0];
        t = t.split(".")[1],
        i = f + "-" + t,
        r || (r = n, n = e.Widget),
        e.expr[":"][i.toLowerCase()] = function(t) {
            return !! e.data(t, i)
        },
        e[f] = e[f] || {},
        s = e[f][t],
        o = e[f][t] = function(e, t) {
            if (!this._createWidget) return new o(e, t);
            arguments.length && this._createWidget(e, t)
        },
        e.extend(o, s, {
            version: r.version,
            _proto: e.extend({},
            r),
            _childConstructors: []
        }),
        u = new n,
        u.options = e.widget.extend({},
        u.options),
        e.each(r,
        function(t, r) {
            if (!e.isFunction(r)) {
                a[t] = r;
                return
            }
            a[t] = function() {
                var e = function() {
                    return n.prototype[t].apply(this, arguments)
                },
                i = function(e) {
                    return n.prototype[t].apply(this, e)
                };
                return function() {
                    var t = this._super,
                    n = this._superApply,
                    s;
                    return this._super = e,
                    this._superApply = i,
                    s = r.apply(this, arguments),
                    this._super = t,
                    this._superApply = n,
                    s
                }
            } ()
        }),
        o.prototype = e.widget.extend(u, {
            widgetEventPrefix: s ? u.widgetEventPrefix || t: t
        },
        a, {
            constructor: o,
            namespace: f,
            widgetName: t,
            widgetFullName: i
        }),
        s ? (e.each(s._childConstructors,
        function(t, n) {
            var r = n.prototype;
            e.widget(r.namespace + "." + r.widgetName, o, n._proto)
        }), delete s._childConstructors) : n._childConstructors.push(o),
        e.widget.bridge(t, o)
    },
    e.widget.extend = function(n) {
        var i = r.call(arguments, 1),
        s = 0,
        o = i.length,
        u,
        a;
        for (; s < o; s++) for (u in i[s]) a = i[s][u],
        i[s].hasOwnProperty(u) && a !== t && (e.isPlainObject(a) ? n[u] = e.isPlainObject(n[u]) ? e.widget.extend({},
        n[u], a) : e.widget.extend({},
        a) : n[u] = a);
        return n
    },
    e.widget.bridge = function(n, i) {
        var s = i.prototype.widgetFullName || n;
        e.fn[n] = function(o) {
            var u = typeof o == "string",
            a = r.call(arguments, 1),
            f = this;
            return o = !u && a.length ? e.widget.extend.apply(null, [o].concat(a)) : o,
            u ? this.each(function() {
                var r, i = e.data(this, s);
                if (!i) return e.error("cannot call methods on " + n + " prior to initialization; " + "attempted to call method '" + o + "'");
                if (!e.isFunction(i[o]) || o.charAt(0) === "_") return e.error("no such method '" + o + "' for " + n + " widget instance");
                r = i[o].apply(i, a);
                if (r !== i && r !== t) return f = r && r.jquery ? f.pushStack(r.get()) : r,
                !1
            }) : this.each(function() {
                var t = e.data(this, s);
                t ? t.option(o || {})._init() : e.data(this, s, new i(o, this))
            }),
            f
        }
    },
    e.Widget = function() {},
    e.Widget._childConstructors = [],
    e.Widget.prototype = {
        widgetName: "widget",
        widgetEventPrefix: "",
        defaultElement: "<div>",
        options: {
            disabled: !1,
            create: null
        },
        _createWidget: function(t, r) {
            r = e(r || this.defaultElement || this)[0],
            this.element = e(r),
            this.uuid = n++,
            this.eventNamespace = "." + this.widgetName + this.uuid,
            this.options = e.widget.extend({},
            this.options, this._getCreateOptions(), t),
            this.bindings = e(),
            this.hoverable = e(),
            this.focusable = e(),
            r !== this && (e.data(r, this.widgetFullName, this), this._on(!0, this.element, {
                remove: function(e) {
                    e.target === r && this.destroy()
                }
            }), this.document = e(r.style ? r.ownerDocument: r.document || r), this.window = e(this.document[0].defaultView || this.document[0].parentWindow)),
            this._create(),
            this._trigger("create", null, this._getCreateEventData()),
            this._init()
        },
        _getCreateOptions: e.noop,
        _getCreateEventData: e.noop,
        _create: e.noop,
        _init: e.noop,
        destroy: function() {
            this._destroy(),
            this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),
            this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled " + "ui-state-disabled"),
            this.bindings.unbind(this.eventNamespace),
            this.hoverable.removeClass("ui-state-hover"),
            this.focusable.removeClass("ui-state-focus")
        },
        _destroy: e.noop,
        widget: function() {
            return this.element
        },
        option: function(n, r) {
            var i = n,
            s, o, u;
            if (arguments.length === 0) return e.widget.extend({},
            this.options);
            if (typeof n == "string") {
                i = {},
                s = n.split("."),
                n = s.shift();
                if (s.length) {
                    o = i[n] = e.widget.extend({},
                    this.options[n]);
                    for (u = 0; u < s.length - 1; u++) o[s[u]] = o[s[u]] || {},
                    o = o[s[u]];
                    n = s.pop();
                    if (arguments.length === 1) return o[n] === t ? null: o[n];
                    o[n] = r
                } else {
                    if (arguments.length === 1) return this.options[n] === t ? null: this.options[n];
                    i[n] = r
                }
            }
            return this._setOptions(i),
            this
        },
        _setOptions: function(e) {
            var t;
            for (t in e) this._setOption(t, e[t]);
            return this
        },
        _setOption: function(e, t) {
            return this.options[e] = t,
            e === "disabled" && (this.widget().toggleClass(this.widgetFullName + "-disabled ui-state-disabled", !!t).attr("aria-disabled", t), this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus")),
            this
        },
        enable: function() {
            return this._setOption("disabled", !1)
        },
        disable: function() {
            return this._setOption("disabled", !0)
        },
        _on: function(t, n, r) {
            var i, s = this;
            typeof t != "boolean" && (r = n, n = t, t = !1),
            r ? (n = i = e(n), this.bindings = this.bindings.add(n)) : (r = n, n = this.element, i = this.widget()),
            e.each(r,
            function(r, o) {
                function u() {
                    if (!t && (s.options.disabled === !0 || e(this).hasClass("ui-state-disabled"))) return;
                    return (typeof o == "string" ? s[o] : o).apply(s, arguments)
                }
                typeof o != "string" && (u.guid = o.guid = o.guid || u.guid || e.guid++);
                var a = r.match(/^(\w+)\s*(.*)$/),
                f = a[1] + s.eventNamespace,
                l = a[2];
                l ? i.delegate(l, f, u) : n.bind(f, u)
            })
        },
        _off: function(e, t) {
            t = (t || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace,
            e.unbind(t).undelegate(t)
        },
        _delay: function(e, t) {
            function n() {
                return (typeof e == "string" ? r[e] : e).apply(r, arguments)
            }
            var r = this;
            return setTimeout(n, t || 0)
        },
        _hoverable: function(t) {
            this.hoverable = this.hoverable.add(t),
            this._on(t, {
                mouseenter: function(t) {
                    e(t.currentTarget).addClass("ui-state-hover")
                },
                mouseleave: function(t) {
                    e(t.currentTarget).removeClass("ui-state-hover")
                }
            })
        },
        _focusable: function(t) {
            this.focusable = this.focusable.add(t),
            this._on(t, {
                focusin: function(t) {
                    e(t.currentTarget).addClass("ui-state-focus")
                },
                focusout: function(t) {
                    e(t.currentTarget).removeClass("ui-state-focus")
                }
            })
        },
        _trigger: function(t, n, r) {
            var i, s, o = this.options[t];
            r = r || {},
            n = e.Event(n),
            n.type = (t === this.widgetEventPrefix ? t: this.widgetEventPrefix + t).toLowerCase(),
            n.target = this.element[0],
            s = n.originalEvent;
            if (s) for (i in s) i in n || (n[i] = s[i]);
            return this.element.trigger(n, r),
            !(e.isFunction(o) && o.apply(this.element[0], [n].concat(r)) === !1 || n.isDefaultPrevented())
        }
    },
    e.each({
        show: "fadeIn",
        hide: "fadeOut"
    },
    function(t, n) {
        e.Widget.prototype["_" + t] = function(r, i, s) {
            typeof i == "string" && (i = {
                effect: i
            });
            var o, u = i ? i === !0 || typeof i == "number" ? n: i.effect || n: t;
            i = i || {},
            typeof i == "number" && (i = {
                duration: i
            }),
            o = !e.isEmptyObject(i),
            i.complete = s,
            i.delay && r.delay(i.delay),
            o && e.effects && e.effects.effect[u] ? r[t](i) : u !== t && r[u] ? r[u](i.duration, i.easing, s) : r.queue(function(n) {
                e(this)[t](),
                s && s.call(r[0]),
                n()
            })
        }
    })
} (jQuery),
function(e, t) {
    var n = !1;
    e(document).mouseup(function() {
        n = !1
    }),
    e.widget("ui.mouse", {
        version: "1.10.4",
        options: {
            cancel: "input,textarea,button,select,option",
            distance: 1,
            delay: 0
        },
        _mouseInit: function() {
            var t = this;
            this.element.bind("mousedown." + this.widgetName,
            function(e) {
                return t._mouseDown(e)
            }).bind("click." + this.widgetName,
            function(n) {
                if (!0 === e.data(n.target, t.widgetName + ".preventClickEvent")) return e.removeData(n.target, t.widgetName + ".preventClickEvent"),
                n.stopImmediatePropagation(),
                !1
            }),
            this.started = !1
        },
        _mouseDestroy: function() {
            this.element.unbind("." + this.widgetName),
            this._mouseMoveDelegate && e(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate)
        },
        _mouseDown: function(t) {
            if (n) return;
            this._mouseStarted && this._mouseUp(t),
            this._mouseDownEvent = t;
            var r = this,
            i = t.which === 1,
            s = typeof this.options.cancel == "string" && t.target.nodeName ? e(t.target).closest(this.options.cancel).length: !1;
            if (!i || s || !this._mouseCapture(t)) return ! 0;
            this.mouseDelayMet = !this.options.delay,
            this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
                r.mouseDelayMet = !0
            },
            this.options.delay));
            if (this._mouseDistanceMet(t) && this._mouseDelayMet(t)) {
                this._mouseStarted = this._mouseStart(t) !== !1;
                if (!this._mouseStarted) return t.preventDefault(),
                !0
            }
            return ! 0 === e.data(t.target, this.widgetName + ".preventClickEvent") && e.removeData(t.target, this.widgetName + ".preventClickEvent"),
            this._mouseMoveDelegate = function(e) {
                return r._mouseMove(e)
            },
            this._mouseUpDelegate = function(e) {
                return r._mouseUp(e)
            },
            e(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate),
            t.preventDefault(),
            n = !0,
            !0
        },
        _mouseMove: function(t) {
            return e.ui.ie && (!document.documentMode || document.documentMode < 9) && !t.button ? this._mouseUp(t) : this._mouseStarted ? (this._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, t) !== !1, this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted)
        },
        _mouseUp: function(t) {
            return e(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate),
            this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && e.data(t.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(t)),
            !1
        },
        _mouseDistanceMet: function(e) {
            return Math.max(Math.abs(this._mouseDownEvent.pageX - e.pageX), Math.abs(this._mouseDownEvent.pageY - e.pageY)) >= this.options.distance
        },
        _mouseDelayMet: function() {
            return this.mouseDelayMet
        },
        _mouseStart: function() {},
        _mouseDrag: function() {},
        _mouseStop: function() {},
        _mouseCapture: function() {
            return ! 0
        }
    })
} (jQuery),
function(e, t) {
    function h(e, t, n) {
        return [parseFloat(e[0]) * (l.test(e[0]) ? t / 100 : 1), parseFloat(e[1]) * (l.test(e[1]) ? n / 100 : 1)]
    }
    function p(t, n) {
        return parseInt(e.css(t, n), 10) || 0
    }
    function d(t) {
        var n = t[0];
        return n.nodeType === 9 ? {
            width: t.width(),
            height: t.height(),
            offset: {
                top: 0,
                left: 0
            }
        }: e.isWindow(n) ? {
            width: t.width(),
            height: t.height(),
            offset: {
                top: t.scrollTop(),
                left: t.scrollLeft()
            }
        }: n.preventDefault ? {
            width: 0,
            height: 0,
            offset: {
                top: n.pageY,
                left: n.pageX
            }
        }: {
            width: t.outerWidth(),
            height: t.outerHeight(),
            offset: t.offset()
        }
    }
    e.ui = e.ui || {};
    var n, r = Math.max,
    i = Math.abs,
    s = Math.round,
    o = /left|center|right/,
    u = /top|center|bottom/,
    a = /[\+\-]\d+(\.[\d]+)?%?/,
    f = /^\w+/,
    l = /%$/,
    c = e.fn.position;
    e.position = {
        scrollbarWidth: function() {
            if (n !== t) return n;
            var r, i, s = e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),
            o = s.children()[0];
            return e("body").append(s),
            r = o.offsetWidth,
            s.css("overflow", "scroll"),
            i = o.offsetWidth,
            r === i && (i = s[0].clientWidth),
            s.remove(),
            n = r - i
        },
        getScrollInfo: function(t) {
            var n = t.isWindow || t.isDocument ? "": t.element.css("overflow-x"),
            r = t.isWindow || t.isDocument ? "": t.element.css("overflow-y"),
            i = n === "scroll" || n === "auto" && t.width < t.element[0].scrollWidth,
            s = r === "scroll" || r === "auto" && t.height < t.element[0].scrollHeight;
            return {
                width: s ? e.position.scrollbarWidth() : 0,
                height: i ? e.position.scrollbarWidth() : 0
            }
        },
        getWithinInfo: function(t) {
            var n = e(t || window),
            r = e.isWindow(n[0]),
            i = !!n[0] && n[0].nodeType === 9;
            return {
                element: n,
                isWindow: r,
                isDocument: i,
                offset: n.offset() || {
                    left: 0,
                    top: 0
                },
                scrollLeft: n.scrollLeft(),
                scrollTop: n.scrollTop(),
                width: r ? n.width() : n.outerWidth(),
                height: r ? n.height() : n.outerHeight()
            }
        }
    },
    e.fn.position = function(t) {
        if (!t || !t.of) return c.apply(this, arguments);
        t = e.extend({},
        t);
        var n, l, v, m, g, y, b = e(t.of),
        w = e.position.getWithinInfo(t.within),
        E = e.position.getScrollInfo(w),
        S = (t.collision || "flip").split(" "),
        x = {};
        return y = d(b),
        b[0].preventDefault && (t.at = "left top"),
        l = y.width,
        v = y.height,
        m = y.offset,
        g = e.extend({},
        m),
        e.each(["my", "at"],
        function() {
            var e = (t[this] || "").split(" "),
            n,
            r;
            e.length === 1 && (e = o.test(e[0]) ? e.concat(["center"]) : u.test(e[0]) ? ["center"].concat(e) : ["center", "center"]),
            e[0] = o.test(e[0]) ? e[0] : "center",
            e[1] = u.test(e[1]) ? e[1] : "center",
            n = a.exec(e[0]),
            r = a.exec(e[1]),
            x[this] = [n ? n[0] : 0, r ? r[0] : 0],
            t[this] = [f.exec(e[0])[0], f.exec(e[1])[0]]
        }),
        S.length === 1 && (S[1] = S[0]),
        t.at[0] === "right" ? g.left += l: t.at[0] === "center" && (g.left += l / 2),
        t.at[1] === "bottom" ? g.top += v: t.at[1] === "center" && (g.top += v / 2),
        n = h(x.at, l, v),
        g.left += n[0],
        g.top += n[1],
        this.each(function() {
            var o, u, a = e(this),
            f = a.outerWidth(),
            c = a.outerHeight(),
            d = p(this, "marginLeft"),
            y = p(this, "marginTop"),
            T = f + d + p(this, "marginRight") + E.width,
            N = c + y + p(this, "marginBottom") + E.height,
            C = e.extend({},
            g),
            k = h(x.my, a.outerWidth(), a.outerHeight());
            t.my[0] === "right" ? C.left -= f: t.my[0] === "center" && (C.left -= f / 2),
            t.my[1] === "bottom" ? C.top -= c: t.my[1] === "center" && (C.top -= c / 2),
            C.left += k[0],
            C.top += k[1],
            e.support.offsetFractions || (C.left = s(C.left), C.top = s(C.top)),
            o = {
                marginLeft: d,
                marginTop: y
            },
            e.each(["left", "top"],
            function(r, i) {
                e.ui.position[S[r]] && e.ui.position[S[r]][i](C, {
                    targetWidth: l,
                    targetHeight: v,
                    elemWidth: f,
                    elemHeight: c,
                    collisionPosition: o,
                    collisionWidth: T,
                    collisionHeight: N,
                    offset: [n[0] + k[0], n[1] + k[1]],
                    my: t.my,
                    at: t.at,
                    within: w,
                    elem: a
                })
            }),
            t.using && (u = function(e) {
                var n = m.left - C.left,
                s = n + l - f,
                o = m.top - C.top,
                u = o + v - c,
                h = {
                    target: {
                        element: b,
                        left: m.left,
                        top: m.top,
                        width: l,
                        height: v
                    },
                    element: {
                        element: a,
                        left: C.left,
                        top: C.top,
                        width: f,
                        height: c
                    },
                    horizontal: s < 0 ? "left": n > 0 ? "right": "center",
                    vertical: u < 0 ? "top": o > 0 ? "bottom": "middle"
                };
                l < f && i(n + s) < l && (h.horizontal = "center"),
                v < c && i(o + u) < v && (h.vertical = "middle"),
                r(i(n), i(s)) > r(i(o), i(u)) ? h.important = "horizontal": h.important = "vertical",
                t.using.call(this, e, h)
            }),
            a.offset(e.extend(C, {
                using: u
            }))
        })
    },
    e.ui.position = {
        fit: {
            left: function(e, t) {
                var n = t.within,
                i = n.isWindow ? n.scrollLeft: n.offset.left,
                s = n.width,
                o = e.left - t.collisionPosition.marginLeft,
                u = i - o,
                a = o + t.collisionWidth - s - i,
                f;
                t.collisionWidth > s ? u > 0 && a <= 0 ? (f = e.left + u + t.collisionWidth - s - i, e.left += u - f) : a > 0 && u <= 0 ? e.left = i: u > a ? e.left = i + s - t.collisionWidth: e.left = i: u > 0 ? e.left += u: a > 0 ? e.left -= a: e.left = r(e.left - o, e.left)
            },
            top: function(e, t) {
                var n = t.within,
                i = n.isWindow ? n.scrollTop: n.offset.top,
                s = t.within.height,
                o = e.top - t.collisionPosition.marginTop,
                u = i - o,
                a = o + t.collisionHeight - s - i,
                f;
                t.collisionHeight > s ? u > 0 && a <= 0 ? (f = e.top + u + t.collisionHeight - s - i, e.top += u - f) : a > 0 && u <= 0 ? e.top = i: u > a ? e.top = i + s - t.collisionHeight: e.top = i: u > 0 ? e.top += u: a > 0 ? e.top -= a: e.top = r(e.top - o, e.top)
            }
        },
        flip: {
            left: function(e, t) {
                var n = t.within,
                r = n.offset.left + n.scrollLeft,
                s = n.width,
                o = n.isWindow ? n.scrollLeft: n.offset.left,
                u = e.left - t.collisionPosition.marginLeft,
                a = u - o,
                f = u + t.collisionWidth - s - o,
                l = t.my[0] === "left" ? -t.elemWidth: t.my[0] === "right" ? t.elemWidth: 0,
                c = t.at[0] === "left" ? t.targetWidth: t.at[0] === "right" ? -t.targetWidth: 0,
                h = -2 * t.offset[0],
                p,
                d;
                if (a < 0) {
                    p = e.left + l + c + h + t.collisionWidth - s - r;
                    if (p < 0 || p < i(a)) e.left += l + c + h
                } else if (f > 0) {
                    d = e.left - t.collisionPosition.marginLeft + l + c + h - o;
                    if (d > 0 || i(d) < f) e.left += l + c + h
                }
            },
            top: function(e, t) {
                var n = t.within,
                r = n.offset.top + n.scrollTop,
                s = n.height,
                o = n.isWindow ? n.scrollTop: n.offset.top,
                u = e.top - t.collisionPosition.marginTop,
                a = u - o,
                f = u + t.collisionHeight - s - o,
                l = t.my[1] === "top",
                c = l ? -t.elemHeight: t.my[1] === "bottom" ? t.elemHeight: 0,
                h = t.at[1] === "top" ? t.targetHeight: t.at[1] === "bottom" ? -t.targetHeight: 0,
                p = -2 * t.offset[1],
                d,
                v;
                a < 0 ? (v = e.top + c + h + p + t.collisionHeight - s - r, e.top + c + h + p > a && (v < 0 || v < i(a)) && (e.top += c + h + p)) : f > 0 && (d = e.top - t.collisionPosition.marginTop + c + h + p - o, e.top + c + h + p > f && (d > 0 || i(d) < f) && (e.top += c + h + p))
            }
        },
        flipfit: {
            left: function() {
                e.ui.position.flip.left.apply(this, arguments),
                e.ui.position.fit.left.apply(this, arguments)
            },
            top: function() {
                e.ui.position.flip.top.apply(this, arguments),
                e.ui.position.fit.top.apply(this, arguments)
            }
        }
    },
    function() {
        var t, n, r, i, s, o = document.getElementsByTagName("body")[0],
        u = document.createElement("div");
        t = document.createElement(o ? "div": "body"),
        r = {
            visibility: "hidden",
            width: 0,
            height: 0,
            border: 0,
            margin: 0,
            background: "none"
        },
        o && e.extend(r, {
            position: "absolute",
            left: "-1000px",
            top: "-1000px"
        });
        for (s in r) t.style[s] = r[s];
        t.appendChild(u),
        n = o || document.documentElement,
        n.insertBefore(t, n.firstChild),
        u.style.cssText = "position: absolute; left: 10.7432222px;",
        i = e(u).offset().left,
        e.support.offsetFractions = i > 10 && i < 11,
        t.innerHTML = "",
        n.removeChild(t)
    } ()
} (jQuery),
function(e, t, n) { (function(e) {
        "use strict";
        typeof define == "function" && define.amd ? define(["jquery"], e) : jQuery && !jQuery.fn.qtip && e(jQuery)
    })(function(r) {
        "use strict";
        function I(e, t, n, i) {
            this.id = n,
            this.target = e,
            this.tooltip = o,
            this.elements = {
                target: e
            },
            this._id = T + "-" + n,
            this.timers = {
                img: {}
            },
            this.options = t,
            this.plugins = {},
            this.cache = {
                event: {},
                target: r(),
                disabled: s,
                attr: i,
                onTooltip: s,
                lastClass: ""
            },
            this.rendered = this.destroyed = this.disabled = this.waiting = this.hiddenDuringWait = this.positioning = this.triggering = s
        }
        function q(e) {
            return e === o || r.type(e) !== "object"
        }
        function R(e) {
            return ! (r.isFunction(e) || e && e.attr || e.length || r.type(e) === "object" && (e.jquery || e.then))
        }
        function U(e) {
            var t, n, u, a;
            return q(e) ? s: (q(e.metadata) && (e.metadata = {
                type: e.metadata
            }), "content" in e && (t = e.content, q(t) || t.jquery || t.done ? t = e.content = {
                text: n = R(t) ? s: t
            }: n = t.text, "ajax" in t && (u = t.ajax, a = u && u.once !== s, delete t.ajax, t.text = function(e, t) {
                var i = n || r(this).attr(t.options.content.attr) || "Loading...",
                s = r.ajax(r.extend({},
                u, {
                    context: t
                })).then(u.success, o, u.error).then(function(e) {
                    return e && a && t.set("content.text", e),
                    e
                },
                function(e, n, r) {
                    if (t.destroyed || e.status === 0) return;
                    t.set("content.text", n + ": " + r)
                });
                return a ? i: (t.set("content.text", i), s)
            }), "title" in t && (r.isPlainObject(t.title) && (t.button = t.title.button, t.title = t.title.text), R(t.title || s) && (t.title = s))), "position" in e && q(e.position) && (e.position = {
                my: e.position,
                at: e.position
            }), "show" in e && q(e.show) && (e.show = e.show.jquery ? {
                target: e.show
            }: e.show === i ? {
                ready: i
            }: {
                event: e.show
            }), "hide" in e && q(e.hide) && (e.hide = e.hide.jquery ? {
                target: e.hide
            }: {
                event: e.hide
            }), "style" in e && q(e.style) && (e.style = {
                classes: e.style
            }), r.each(x,
            function() {
                this.sanitize && this.sanitize(e)
            }), e)
        }
        function z(e, t) {
            var n = 0,
            r, i = e,
            s = t.split(".");
            while (i = i[s[n++]]) n < s.length && (r = i);
            return [r || e, s.pop()]
        }
        function W(e, t) {
            var n, r, i;
            for (n in this.checks) for (r in this.checks[n]) if (i = (new RegExp(r, "i")).exec(e)) t.push(i),
            (n === "builtin" || this.plugins[n]) && this.checks[n][r].apply(this.plugins[n] || this, t)
        }
        function J(e) {
            return k.concat("").join(e ? "-" + e + " ": " ")
        }
        function K(e, t) {
            if (t > 0) return setTimeout(r.proxy(e, this), t);
            e.call(this)
        }
        function Q(e) {
            if (this.tooltip.hasClass(P)) return;
            clearTimeout(this.timers.show),
            clearTimeout(this.timers.hide),
            this.timers.show = K.call(this,
            function() {
                this.toggle(i, e)
            },
            this.options.show.delay)
        }
        function G(e) {
            if (this.tooltip.hasClass(P) || this.destroyed) return;
            var t = r(e.relatedTarget),
            n = t.closest(L)[0] === this.tooltip[0],
            i = t[0] === this.options.show.target[0];
            clearTimeout(this.timers.show),
            clearTimeout(this.timers.hide);
            if (this !== t[0] && this.options.position.target === "mouse" && n || this.options.hide.fixed && /mouse(out|leave|move)/.test(e.type) && (n || i)) {
                try {
                    e.preventDefault(),
                    e.stopImmediatePropagation()
                } catch(o) {}
                return
            }
            this.timers.hide = K.call(this,
            function() {
                this.toggle(s, e)
            },
            this.options.hide.delay, this)
        }
        function Y(e) {
            if (this.tooltip.hasClass(P) || !this.options.hide.inactive) return;
            clearTimeout(this.timers.inactive),
            this.timers.inactive = K.call(this,
            function() {
                this.hide(e)
            },
            this.options.hide.inactive)
        }
        function Z(e) {
            this.rendered && this.tooltip[0].offsetWidth > 0 && this.reposition(e)
        }
        function et(e, n, i) {
            r(t.body).delegate(e, (n.split ? n: n.join("." + T + " ")) + "." + T,
            function() {
                var e = b.api[r.attr(this, C)];
                e && !e.disabled && i.apply(e, arguments)
            })
        }
        function tt(e, n, u) {
            var a, f, l, c, h, p = r(t.body),
            d = e[0] === t ? p: e,
            v = e.metadata ? e.metadata(u.metadata) : o,
            m = u.metadata.type === "html5" && v ? v[u.metadata.name] : o,
            g = e.data(u.metadata.name || "qtipopts");
            try {
                g = typeof g == "string" ? r.parseJSON(g) : g
            } catch(y) {}
            c = r.extend(i, {},
            b.defaults, u, typeof g == "object" ? U(g) : o, U(m || v)),
            f = c.position,
            c.id = n;
            if ("boolean" == typeof c.content.text) {
                l = e.attr(c.content.attr);
                if (c.content.attr === s || !l) return s;
                c.content.text = l
            }
            f.container.length || (f.container = p),
            f.target === s && (f.target = d),
            c.show.target === s && (c.show.target = d),
            c.show.solo === i && (c.show.solo = f.container.closest("body")),
            c.hide.target === s && (c.hide.target = d),
            c.position.viewport === i && (c.position.viewport = f.container),
            f.container = f.container.eq(0),
            f.at = new E(f.at, i),
            f.my = new E(f.my);
            if (e.data(T)) if (c.overwrite) e.qtip("destroy", !0);
            else if (c.overwrite === s) return s;
            return e.attr(N, n),
            c.suppress && (h = e.attr("title")) && e.removeAttr("title").attr(B, h).attr("title", ""),
            a = new I(e, c, n, !!l),
            e.data(T, a),
            a
        }
        function ht(e) {
            return e.charAt(0).toUpperCase() + e.slice(1)
        }
        function vt(e, t) {
            var r = t.charAt(0).toUpperCase() + t.slice(1),
            i = (t + " " + dt.join(r + " ") + r).split(" "),
            s,
            o,
            u = 0;
            if (pt[t]) return e.css(pt[t]);
            while (s = i[u++]) if ((o = e.css(s)) !== n) return pt[t] = s,
            o
        }
        function mt(e, t) {
            return Math.ceil(parseFloat(vt(e, t)))
        }
        function Et(e, t) {
            this._ns = "tip",
            this.options = t,
            this.offset = t.offset,
            this.size = [t.width, t.height],
            this.init(this.qtip = e)
        }
        var i = !0,
        s = !1,
        o = null,
        u = "x",
        a = "y",
        f = "width",
        l = "height",
        c = "top",
        h = "left",
        p = "bottom",
        d = "right",
        v = "center",
        m = "flip",
        g = "flipinvert",
        y = "shift",
        b, w, E, S, x = {},
        T = "qtip",
        N = "data-hasqtip",
        C = "data-qtip-id",
        k = ["ui-widget", "ui-tooltip"],
        L = "." + T,
        A = "click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),
        O = T + "-fixed",
        M = T + "-default",
        _ = T + "-focus",
        D = T + "-hover",
        P = T + "-disabled",
        H = "_replacedByqTip",
        B = "oldtitle",
        j,
        F = {
            ie: function() {
                for (var e = 4,
                n = t.createElement("div"); (n.innerHTML = "<!--[if gt IE " + e + "]><i></i><![endif]-->") && n.getElementsByTagName("i")[0]; e += 1);
                return e > 4 ? e: NaN
            } (),
            iOS: parseFloat(("" + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0, ""])[1]).replace("undefined", "3_2").replace("_", ".").replace("_", "")) || s
        };
        w = I.prototype,
        w._when = function(e) {
            return r.when.apply(r, e)
        },
        w.render = function(e) {
            if (this.rendered || this.destroyed) return this;
            var t = this,
            n = this.options,
            o = this.cache,
            u = this.elements,
            a = n.content.text,
            f = n.content.title,
            l = n.content.button,
            c = n.position,
            h = "." + this._id + " ",
            p = [],
            d;
            return r.attr(this.target[0], "aria-describedby", this._id),
            o.posClass = this._createPosClass((this.position = {
                my: c.my,
                at: c.at
            }).my),
            this.tooltip = u.tooltip = d = r("<div/>", {
                id: this._id,
                "class": [T, M, n.style.classes, o.posClass].join(" "),
                width: n.style.width || "",
                height: n.style.height || "",
                tracking: c.target === "mouse" && c.adjust.mouse,
                role: "alert",
                "aria-live": "polite",
                "aria-atomic": s,
                "aria-describedby": this._id + "-content",
                "aria-hidden": i
            }).toggleClass(P, this.disabled).attr(C, this.id).data(T, this).appendTo(c.container).append(u.content = r("<div />", {
                "class": T + "-content",
                id: this._id + "-content",
                "aria-atomic": i
            })),
            this.rendered = -1,
            this.positioning = i,
            f && (this._createTitle(), r.isFunction(f) || p.push(this._updateTitle(f, s))),
            l && this._createButton(),
            r.isFunction(a) || p.push(this._updateContent(a, s)),
            this.rendered = i,
            this._setWidget(),
            r.each(x,
            function(e) {
                var n;
                this.initialize === "render" && (n = this(t)) && (t.plugins[e] = n)
            }),
            this._unassignEvents(),
            this._assignEvents(),
            this._when(p).then(function() {
                t._trigger("render"),
                t.positioning = s,
                !t.hiddenDuringWait && (n.show.ready || e) && t.toggle(i, o.event, s),
                t.hiddenDuringWait = s
            }),
            b.api[this.id] = this,
            this
        },
        w.destroy = function(e) {
            function t() {
                if (this.destroyed) return;
                this.destroyed = i;
                var e = this.target,
                t = e.attr(B),
                n;
                this.rendered && this.tooltip.stop(1, 0).find("*").remove().end().remove(),
                r.each(this.plugins,
                function(e) {
                    this.destroy && this.destroy()
                });
                for (n in this.timers) clearTimeout(this.timers[n]);
                e.removeData(T).removeAttr(C).removeAttr(N).removeAttr("aria-describedby"),
                this.options.suppress && t && e.attr("title", t).removeAttr(B),
                this._unassignEvents(),
                this.options = this.elements = this.cache = this.timers = this.plugins = this.mouse = o,
                delete b.api[this.id]
            }
            return this.destroyed ? this.target: (e === i && this.triggering !== "hide" || !this.rendered ? t.call(this) : (this.tooltip.one("tooltiphidden", r.proxy(t, this)), !this.triggering && this.hide()), this.target)
        },
        S = w.checks = {
            builtin: {
                "^id$": function(e, t, n, o) {
                    var u = n === i ? b.nextid: n,
                    a = T + "-" + u;
                    u !== s && u.length > 0 && !r("#" + a).length ? (this._id = a, this.rendered && (this.tooltip[0].id = this._id, this.elements.content[0].id = this._id + "-content", this.elements.title[0].id = this._id + "-title")) : e[t] = o
                },
                "^prerender": function(e, t, n) {
                    n && !this.rendered && this.render(this.options.show.ready)
                },
                "^content.text$": function(e, t, n) {
                    this._updateContent(n)
                },
                "^content.attr$": function(e, t, n, r) {
                    this.options.content.text === this.target.attr(r) && this._updateContent(this.target.attr(n))
                },
                "^content.title$": function(e, t, n) {
                    if (!n) return this._removeTitle();
                    n && !this.elements.title && this._createTitle(),
                    this._updateTitle(n)
                },
                "^content.button$": function(e, t, n) {
                    this._updateButton(n)
                },
                "^content.title.(text|button)$": function(e, t, n) {
                    this.set("content." + t, n)
                },
                "^position.(my|at)$": function(e, t, n) {
                    "string" == typeof n && (this.position[t] = e[t] = new E(n, t === "at"))
                },
                "^position.container$": function(e, t, n) {
                    this.rendered && this.tooltip.appendTo(n)
                },
                "^show.ready$": function(e, t, n) {
                    n && (!this.rendered && this.render(i) || this.toggle(i))
                },
                "^style.classes$": function(e, t, n, r) {
                    this.rendered && this.tooltip.removeClass(r).addClass(n)
                },
                "^style.(width|height)": function(e, t, n) {
                    this.rendered && this.tooltip.css(t, n)
                },
                "^style.widget|content.title": function() {
                    this.rendered && this._setWidget()
                },
                "^style.def": function(e, t, n) {
                    this.rendered && this.tooltip.toggleClass(M, !!n)
                },
                "^events.(render|show|move|hide|focus|blur)$": function(e, t, n) {
                    this.rendered && this.tooltip[(r.isFunction(n) ? "": "un") + "bind"]("tooltip" + t, n)
                },
                "^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)": function() {
                    if (!this.rendered) return;
                    var e = this.options.position;
                    this.tooltip.attr("tracking", e.target === "mouse" && e.adjust.mouse),
                    this._unassignEvents(),
                    this._assignEvents()
                }
            }
        },
        w.get = function(e) {
            if (this.destroyed) return this;
            var t = z(this.options, e.toLowerCase()),
            n = t[0][t[1]];
            return n.precedance ? n.string() : n
        };
        var X = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,
        V = /^prerender|show\.ready/i;
        w.set = function(e, t) {
            if (this.destroyed) return this;
            var n = this.rendered,
            u = s,
            a = this.options,
            f = this.checks,
            l;
            return "string" == typeof e ? (l = e, e = {},
            e[l] = t) : e = r.extend({},
            e),
            r.each(e,
            function(t, i) {
                if (n && V.test(t)) {
                    delete e[t];
                    return
                }
                var s = z(a, t.toLowerCase()),
                o;
                o = s[0][s[1]],
                s[0][s[1]] = i && i.nodeType ? r(i) : i,
                u = X.test(t) || u,
                e[t] = [s[0], s[1], i, o]
            }),
            U(a),
            this.positioning = i,
            r.each(e, r.proxy(W, this)),
            this.positioning = s,
            this.rendered && this.tooltip[0].offsetWidth > 0 && u && this.reposition(a.position.target === "mouse" ? o: this.cache.event),
            this
        },
        w._update = function(e, t, n) {
            var u = this,
            a = this.cache;
            return ! this.rendered || !e ? s: (r.isFunction(e) && (e = e.call(this.elements.target, a.event, this) || ""), r.isFunction(e.then) ? (a.waiting = i, e.then(function(e) {
                return a.waiting = s,
                u._update(e, t)
            },
            o,
            function(e) {
                return u._update(e, t)
            })) : e === s || !e && e !== "" ? s: (e.jquery && e.length > 0 ? t.empty().append(e.css({
                display: "block",
                visibility: "visible"
            })) : t.html(e), this._waitForContent(t).then(function(e) {
                u.rendered && u.tooltip[0].offsetWidth > 0 && u.reposition(a.event, !e.length)
            })))
        },
        w._waitForContent = function(e) {
            var t = this.cache;
            return t.waiting = i,
            (r.fn.imagesLoaded ? e.imagesLoaded() : r.Deferred().resolve([])).done(function() {
                t.waiting = s
            }).promise()
        },
        w._updateContent = function(e, t) {
            this._update(e, this.elements.content, t)
        },
        w._updateTitle = function(e, t) {
            this._update(e, this.elements.title, t) === s && this._removeTitle(s)
        },
        w._createTitle = function() {
            var e = this.elements,
            t = this._id + "-title";
            e.titlebar && this._removeTitle(),
            e.titlebar = r("<div />", {
                "class": T + "-titlebar " + (this.options.style.widget ? J("header") : "")
            }).append(e.title = r("<div />", {
                id: t,
                "class": T + "-title",
                "aria-atomic": i
            })).insertBefore(e.content).delegate(".qtip-close", "mousedown keydown mouseup keyup mouseout",
            function(e) {
                r(this).toggleClass("ui-state-active ui-state-focus", e.type.substr( - 4) === "down")
            }).delegate(".qtip-close", "mouseover mouseout",
            function(e) {
                r(this).toggleClass("ui-state-hover", e.type === "mouseover")
            }),
            this.options.content.button && this._createButton()
        },
        w._removeTitle = function(e) {
            var t = this.elements;
            t.title && (t.titlebar.remove(), t.titlebar = t.title = t.button = o, e !== s && this.reposition())
        },
        w._createPosClass = function(e) {
            return T + "-pos-" + (e || this.options.position.my).abbrev()
        },
        w.reposition = function(n, o) {
            if (!this.rendered || this.positioning || this.destroyed) return this;
            this.positioning = i;
            var u = this.cache,
            a = this.tooltip,
            f = this.options.position,
            l = f.target,
            m = f.my,
            g = f.at,
            y = f.viewport,
            b = f.container,
            w = f.adjust,
            E = w.method.split(" "),
            S = a.outerWidth(s),
            T = a.outerHeight(s),
            N = 0,
            C = 0,
            k = a.css("position"),
            L = {
                left: 0,
                top: 0
            },
            A = a[0].offsetWidth > 0,
            O = n && n.type === "scroll",
            M = r(e),
            _ = b[0].ownerDocument,
            D = this.mouse,
            P,
            H,
            B,
            j;
            if (r.isArray(l) && l.length === 2) g = {
                x: h,
                y: c
            },
            L = {
                left: l[0],
                top: l[1]
            };
            else if (l === "mouse") g = {
                x: h,
                y: c
            },
            (!w.mouse || this.options.hide.distance) && u.origin && u.origin.pageX ? n = u.origin: !n || n && (n.type === "resize" || n.type === "scroll") ? n = u.event: D && D.pageX && (n = D),
            k !== "static" && (L = b.offset()),
            _.body.offsetWidth !== (e.innerWidth || _.documentElement.clientWidth) && (H = r(t.body).offset()),
            L = {
                left: n.pageX - L.left + (H && H.left || 0),
                top: n.pageY - L.top + (H && H.top || 0)
            },
            w.mouse && O && D && (L.left -= (D.scrollX || 0) - M.scrollLeft(), L.top -= (D.scrollY || 0) - M.scrollTop());
            else {
                l === "event" ? n && n.target && n.type !== "scroll" && n.type !== "resize" ? u.target = r(n.target) : n.target || (u.target = this.elements.target) : l !== "event" && (u.target = r(l.jquery ? l: this.elements.target)),
                l = u.target,
                l = r(l).eq(0);
                if (l.length === 0) return this;
                l[0] === t || l[0] === e ? (N = F.iOS ? e.innerWidth: l.width(), C = F.iOS ? e.innerHeight: l.height(), l[0] === e && (L = {
                    top: (y || l).scrollTop(),
                    left: (y || l).scrollLeft()
                })) : x.imagemap && l.is("area") ? P = x.imagemap(this, l, g, x.viewport ? E: s) : x.svg && l && l[0].ownerSVGElement ? P = x.svg(this, l, g, x.viewport ? E: s) : (N = l.outerWidth(s), C = l.outerHeight(s), L = l.offset()),
                P && (N = P.width, C = P.height, H = P.offset, L = P.position),
                L = this.reposition.offset(l, L, b);
                if (F.iOS > 3.1 && F.iOS < 4.1 || F.iOS >= 4.3 && F.iOS < 4.33 || !F.iOS && k === "fixed") L.left -= M.scrollLeft(),
                L.top -= M.scrollTop();
                if (!P || P && P.adjustable !== s) L.left += g.x === d ? N: g.x === v ? N / 2 : 0,
                L.top += g.y === p ? C: g.y === v ? C / 2 : 0
            }
            return L.left += w.x + (m.x === d ? -S: m.x === v ? -S / 2 : 0),
            L.top += w.y + (m.y === p ? -T: m.y === v ? -T / 2 : 0),
            x.viewport ? (B = L.adjusted = x.viewport(this, L, f, N, C, S, T), H && B.left && (L.left += H.left), H && B.top && (L.top += H.top), B.my && (this.position.my = B.my)) : L.adjusted = {
                left: 0,
                top: 0
            },
            u.posClass !== (j = this._createPosClass(this.position.my)) && a.removeClass(u.posClass).addClass(u.posClass = j),
            this._trigger("move", [L, y.elem || y], n) ? (delete L.adjusted, o === s || !A || isNaN(L.left) || isNaN(L.top) || l === "mouse" || !r.isFunction(f.effect) ? a.css(L) : r.isFunction(f.effect) && (f.effect.call(a, this, r.extend({},
            L)), a.queue(function(e) {
                r(this).css({
                    opacity: "",
                    height: ""
                }),
                F.ie && this.style.removeAttribute("filter"),
                e()
            })), this.positioning = s, this) : this
        },
        w.reposition.offset = function(e, n, i) {
            function h(e, t) {
                n.left += t * e.scrollLeft(),
                n.top += t * e.scrollTop()
            }
            if (!i[0]) return n;
            var s = r(e[0].ownerDocument),
            o = !!F.ie && t.compatMode !== "CSS1Compat",
            u = i[0],
            a,
            f,
            l,
            c;
            do(f = r.css(u, "position")) !== "static" && (f === "fixed" ? (l = u.getBoundingClientRect(), h(s, -1)) : (l = r(u).position(), l.left += parseFloat(r.css(u, "borderLeftWidth")) || 0, l.top += parseFloat(r.css(u, "borderTopWidth")) || 0), n.left -= l.left + (parseFloat(r.css(u, "marginLeft")) || 0), n.top -= l.top + (parseFloat(r.css(u, "marginTop")) || 0), !a && (c = r.css(u, "overflow")) !== "hidden" && c !== "visible" && (a = r(u)));
            while (u = u.offsetParent);
            return a && (a[0] !== s[0] || o) && h(a, 1),
            n
        };
        var $ = (E = w.reposition.Corner = function(e, t) {
            e = ("" + e).replace(/([A-Z])/, " $1").replace(/middle/gi, v).toLowerCase(),
            this.x = (e.match(/left|right/i) || e.match(/center/) || ["inherit"])[0].toLowerCase(),
            this.y = (e.match(/top|bottom|center/i) || ["inherit"])[0].toLowerCase(),
            this.forceY = !!t;
            var n = e.charAt(0);
            this.precedance = n === "t" || n === "b" ? a: u
        }).prototype;
        $.invert = function(e, t) {
            this[e] = this[e] === h ? d: this[e] === d ? h: t || this[e]
        },
        $.string = function(e) {
            var t = this.x,
            n = this.y,
            r = t !== n ? t === "center" || n !== "center" && (this.precedance === a || this.forceY) ? [n, t] : [t, n] : [t];
            return e !== !1 ? r.join(" ") : r
        },
        $.abbrev = function() {
            var e = this.string(!1);
            return e[0].charAt(0) + (e[1] && e[1].charAt(0) || "")
        },
        $.clone = function() {
            return new E(this.string(), this.forceY)
        },
        w.toggle = function(e, n) {
            var u = this.cache,
            a = this.options,
            f = this.tooltip;
            if (n) {
                if (/over|enter/.test(n.type) && u.event && /out|leave/.test(u.event.type) && a.show.target.add(n.target).length === a.show.target.length && f.has(n.relatedTarget).length) return this;
                u.event = r.event.fix(n)
            }
            this.waiting && !e && (this.hiddenDuringWait = i);
            if (!this.rendered) return e ? this.render(1) : this;
            if (this.destroyed || this.disabled) return this;
            var l = e ? "show": "hide",
            c = this.options[l],
            h = this.options[e ? "hide": "show"],
            p = this.options.position,
            d = this.options.content,
            v = this.tooltip.css("width"),
            m = this.tooltip.is(":visible"),
            g = e || c.target.length === 1,
            y = !n || c.target.length < 2 || u.target[0] === n.target,
            b,
            w,
            E,
            S,
            x;
            return (typeof e).search("boolean|number") && (e = !m),
            b = !f.is(":animated") && m === e && y,
            w = b ? o: !!this._trigger(l, [90]),
            this.destroyed ? this: (w !== s && e && this.focus(n), !w || b ? this: (r.attr(f[0], "aria-hidden", !e), e ? (this.mouse && (u.origin = r.event.fix(this.mouse)), r.isFunction(d.text) && this._updateContent(d.text, s), r.isFunction(d.title) && this._updateTitle(d.title, s), !j && p.target === "mouse" && p.adjust.mouse && (r(t).bind("mousemove." + T, this._storeMouse), j = i), v || f.css("width", f.outerWidth(s)), this.reposition(n, arguments[2]), v || f.css("width", ""), !c.solo || (typeof c.solo == "string" ? r(c.solo) : r(L, c.solo)).not(f).not(c.target).qtip("hide", r.Event("tooltipsolo"))) : (clearTimeout(this.timers.show), delete u.origin, j && !r(L + '[tracking="true"]:visible', c.solo).not(f).length && (r(t).unbind("mousemove." + T), j = s), this.blur(n)), x = r.proxy(function() {
                e ? (F.ie && f[0].style.removeAttribute("filter"), f.css("overflow", ""), "string" == typeof c.autofocus && r(this.options.show.autofocus, f).focus(), this.options.show.target.trigger("qtip-" + this.id + "-inactive")) : f.css({
                    display: "",
                    visibility: "",
                    opacity: "",
                    left: "",
                    top: ""
                }),
                this._trigger(e ? "visible": "hidden")
            },
            this), c.effect === s || g === s ? (f[l](), x()) : r.isFunction(c.effect) ? (f.stop(1, 1), c.effect.call(f, this), f.queue("fx",
            function(e) {
                x(),
                e()
            })) : f.fadeTo(90, e ? 1 : 0, x), e && c.target.trigger("qtip-" + this.id + "-inactive"), this))
        },
        w.show = function(e) {
            return this.toggle(i, e)
        },
        w.hide = function(e) {
            return this.toggle(s, e)
        },
        w.focus = function(e) {
            if (!this.rendered || this.destroyed) return this;
            var t = r(L),
            n = this.tooltip,
            i = parseInt(n[0].style.zIndex, 10),
            s = b.zindex + t.length,
            o;
            return n.hasClass(_) || this._trigger("focus", [s], e) && (i !== s && (t.each(function() {
                this.style.zIndex > i && (this.style.zIndex = this.style.zIndex - 1)
            }), t.filter("." + _).qtip("blur", e)), n.addClass(_)[0].style.zIndex = s),
            this
        },
        w.blur = function(e) {
            return ! this.rendered || this.destroyed ? this: (this.tooltip.removeClass(_), this._trigger("blur", [this.tooltip.css("zIndex")], e), this)
        },
        w.disable = function(e) {
            return this.destroyed ? this: (e === "toggle" ? e = this.rendered ? !this.tooltip.hasClass(P) : !this.disabled: "boolean" != typeof e && (e = i), this.rendered && this.tooltip.toggleClass(P, e).attr("aria-disabled", e), this.disabled = !!e, this)
        },
        w.enable = function() {
            return this.disable(s)
        },
        w._createButton = function() {
            var e = this,
            t = this.elements,
            n = t.tooltip,
            i = this.options.content.button,
            o = typeof i == "string",
            u = o ? i: "Close tooltip";
            t.button && t.button.remove(),
            i.jquery ? t.button = i: t.button = r("<a />", {
                "class": "qtip-close " + (this.options.style.widget ? "": T + "-icon"),
                title: u,
                "aria-label": u
            }).prepend(r("<span />", {
                "class": "ui-icon ui-icon-close",
                html: "&times;"
            })),
            t.button.appendTo(t.titlebar || n).attr("role", "button").click(function(t) {
                return n.hasClass(P) || e.hide(t),
                s
            })
        },
        w._updateButton = function(e) {
            if (!this.rendered) return s;
            var t = this.elements.button;
            e ? this._createButton() : t.remove()
        },
        w._setWidget = function() {
            var e = this.options.style.widget,
            t = this.elements,
            n = t.tooltip,
            r = n.hasClass(P);
            n.removeClass(P),
            P = e ? "ui-state-disabled": "qtip-disabled",
            n.toggleClass(P, r),
            n.toggleClass("ui-helper-reset " + J(), e).toggleClass(M, this.options.style.def && !e),
            t.content && t.content.toggleClass(J("content"), e),
            t.titlebar && t.titlebar.toggleClass(J("header"), e),
            t.button && t.button.toggleClass(T + "-icon", !e)
        },
        w._storeMouse = function(e) {
            return (this.mouse = r.event.fix(e)).type = "mousemove",
            this
        },
        w._bind = function(e, t, n, i, s) {
            if (!e || !n || !t.length) return;
            var o = "." + this._id + (i ? "-" + i: "");
            return r(e).bind((t.split ? t: t.join(o + " ")) + o, r.proxy(n, s || this)),
            this
        },
        w._unbind = function(e, t) {
            return e && r(e).unbind("." + this._id + (t ? "-" + t: "")),
            this
        },
        w._trigger = function(e, t, n) {
            var i = r.Event("tooltip" + e);
            return i.originalEvent = n && r.extend({},
            n) || this.cache.event || o,
            this.triggering = e,
            this.tooltip.trigger(i, [this].concat(t || [])),
            this.triggering = s,
            !i.isDefaultPrevented()
        },
        w._bindEvents = function(e, t, n, i, s, o) {
            var u = n.filter(i).add(i.filter(n)),
            a = [];
            u.length && (r.each(t,
            function(t, n) {
                var i = r.inArray(n, e);
                i > -1 && a.push(e.splice(i, 1)[0])
            }), a.length && (this._bind(u, a,
            function(e) {
                var t = this.rendered ? this.tooltip[0].offsetWidth > 0 : !1; (t ? o: s).call(this, e)
            }), n = n.not(u), i = i.not(u))),
            this._bind(n, e, s),
            this._bind(i, t, o)
        },
        w._assignInitialEvents = function(e) {
            function f(e) {
                if (this.disabled || this.destroyed) return s;
                this.cache.event = e && r.event.fix(e),
                this.cache.target = e && r(e.target),
                clearTimeout(this.timers.show),
                this.timers.show = K.call(this,
                function() {
                    this.render(typeof e == "object" || t.show.ready)
                },
                t.show.delay)
            }
            var t = this.options,
            n = t.show.target,
            o = t.hide.target,
            u = t.show.event ? r.trim("" + t.show.event).split(" ") : [],
            a = t.hide.event ? r.trim("" + t.hide.event).split(" ") : [];
            this._bind(this.elements.target, ["remove", "removeqtip"],
            function(e) {
                this.destroy(!0)
            },
            "destroy"),
            /mouse(over|enter)/i.test(t.show.event) && !/mouse(out|leave)/i.test(t.hide.event) && a.push("mouseleave"),
            this._bind(n, "mousemove",
            function(e) {
                this._storeMouse(e),
                this.cache.onTarget = i
            }),
            this._bindEvents(u, a, n, o, f,
            function() {
                if (!this.timers) return s;
                clearTimeout(this.timers.show)
            }),
            (t.show.ready || t.prerender) && f.call(this, e)
        },
        w._assignEvents = function() {
            var n = this,
            i = this.options,
            o = i.position,
            u = this.tooltip,
            a = i.show.target,
            f = i.hide.target,
            l = o.container,
            c = o.viewport,
            h = r(t),
            p = r(t.body),
            d = r(e),
            v = i.show.event ? r.trim("" + i.show.event).split(" ") : [],
            m = i.hide.event ? r.trim("" + i.hide.event).split(" ") : [];
            r.each(i.events,
            function(e, t) {
                n._bind(u, e === "toggle" ? ["tooltipshow", "tooltiphide"] : ["tooltip" + e], t, null, u)
            }),
            /mouse(out|leave)/i.test(i.hide.event) && i.hide.leave === "window" && this._bind(h, ["mouseout", "blur"],
            function(e) { ! /select|option/.test(e.target.nodeName) && !e.relatedTarget && this.hide(e)
            }),
            i.hide.fixed ? f = f.add(u.addClass(O)) : /mouse(over|enter)/i.test(i.show.event) && this._bind(f, "mouseleave",
            function() {
                clearTimeout(this.timers.show)
            }),
            ("" + i.hide.event).indexOf("unfocus") > -1 && this._bind(l.closest("html"), ["mousedown", "touchstart"],
            function(e) {
                var t = r(e.target),
                n = this.rendered && !this.tooltip.hasClass(P) && this.tooltip[0].offsetWidth > 0,
                i = t.parents(L).filter(this.tooltip[0]).length > 0;
                t[0] !== this.target[0] && t[0] !== this.tooltip[0] && !i && !this.target.has(t[0]).length && n && this.hide(e)
            }),
            "number" == typeof i.hide.inactive && (this._bind(a, "qtip-" + this.id + "-inactive", Y, "inactive"), this._bind(f.add(u), b.inactiveEvents, Y)),
            this._bindEvents(v, m, a, f, Q, G),
            this._bind(a.add(u), "mousemove",
            function(e) {
                if ("number" == typeof i.hide.distance) {
                    var t = this.cache.origin || {},
                    n = this.options.hide.distance,
                    r = Math.abs; (r(e.pageX - t.pageX) >= n || r(e.pageY - t.pageY) >= n) && this.hide(e)
                }
                this._storeMouse(e)
            }),
            o.target === "mouse" && o.adjust.mouse && (i.hide.event && this._bind(a, ["mouseenter", "mouseleave"],
            function(e) {
                if (!this.cache) return s;
                this.cache.onTarget = e.type === "mouseenter"
            }), this._bind(h, "mousemove",
            function(e) {
                this.rendered && this.cache.onTarget && !this.tooltip.hasClass(P) && this.tooltip[0].offsetWidth > 0 && this.reposition(e)
            })),
            (o.adjust.resize || c.length) && this._bind(r.event.special.resize ? c: d, "resize", Z),
            o.adjust.scroll && this._bind(d.add(o.container), "scroll", Z)
        },
        w._unassignEvents = function() {
            var n = this.options,
            i = n.show.target,
            s = n.hide.target,
            o = r.grep([this.elements.target[0], this.rendered && this.tooltip[0], n.position.container[0], n.position.viewport[0], n.position.container.closest("html")[0], e, t],
            function(e) {
                return typeof e == "object"
            });
            i && i.toArray && (o = o.concat(i.toArray())),
            s && s.toArray && (o = o.concat(s.toArray())),
            this._unbind(o)._unbind(o, "destroy")._unbind(o, "inactive")
        },
        r(function() {
            et(L, ["mouseenter", "mouseleave"],
            function(e) {
                var t = e.type === "mouseenter",
                n = r(e.currentTarget),
                i = r(e.relatedTarget || e.target),
                s = this.options;
                t ? (this.focus(e), n.hasClass(O) && !n.hasClass(P) && clearTimeout(this.timers.hide)) : s.position.target === "mouse" && s.position.adjust.mouse && s.hide.event && s.show.target && !i.closest(s.show.target[0]).length && this.hide(e),
                n.toggleClass(D, t)
            }),
            et("[" + C + "]", A, Y)
        }),
        b = r.fn.qtip = function(e, t, u) {
            var a = ("" + e).toLowerCase(),
            f = o,
            l = r.makeArray(arguments).slice(1),
            c = l[l.length - 1],
            h = this[0] ? r.data(this[0], T) : o;
            if (!arguments.length && h || a === "api") return h;
            if ("string" == typeof e) return this.each(function() {
                var e = r.data(this, T);
                if (!e) return i;
                c && c.timeStamp && (e.cache.event = c);
                if (!t || a !== "option" && a !== "options") e[a] && e[a].apply(e, l);
                else {
                    if (u === n && !r.isPlainObject(t)) return f = e.get(t),
                    s;
                    e.set(t, u)
                }
            }),
            f !== o ? f: this;
            if ("object" == typeof e || !arguments.length) return h = U(r.extend(i, {},
            e)),
            this.each(function(e) {
                var t, n;
                n = r.isArray(h.id) ? h.id[e] : h.id,
                n = !n || n === s || n.length < 1 || b.api[n] ? b.nextid++:n,
                t = tt(r(this), n, h);
                if (t === s) return i;
                b.api[n] = t,
                r.each(x,
                function() {
                    this.initialize === "initialize" && this(t)
                }),
                t._assignInitialEvents(c)
            })
        },
        r.qtip = I,
        b.api = {},
        r.each({
            attr: function(e, t) {
                if (this.length) {
                    var n = this[0],
                    i = "title",
                    s = r.data(n, "qtip");
                    if (e === i && s && "object" == typeof s && s.options.suppress) return arguments.length < 2 ? r.attr(n, B) : (s && s.options.content.attr === i && s.cache.attr && s.set("content.text", t), this.attr(B, t))
                }
                return r.fn["attr" + H].apply(this, arguments)
            },
            clone: function(e) {
                var t = r([]),
                n = "title",
                i = r.fn["clone" + H].apply(this, arguments);
                return e || i.filter("[" + B + "]").attr("title",
                function() {
                    return r.attr(this, B)
                }).removeAttr(B),
                i
            }
        },
        function(e, t) {
            if (!t || r.fn[e + H]) return i;
            var n = r.fn[e + H] = r.fn[e];
            r.fn[e] = function() {
                return t.apply(this, arguments) || n.apply(this, arguments)
            }
        }),
        r.ui || (r["cleanData" + H] = r.cleanData, r.cleanData = function(e) {
            for (var t = 0,
            n; (n = r(e[t])).length; t++) if (n.attr(N)) try {
                n.triggerHandler("removeqtip")
            } catch(i) {}
            r["cleanData" + H].apply(this, arguments)
        }),
        b.version = "2.2.0-63-",
        b.nextid = 0,
        b.inactiveEvents = A,
        b.zindex = 15e3,
        b.defaults = {
            prerender: s,
            id: s,
            overwrite: i,
            suppress: i,
            content: {
                text: i,
                attr: "title",
                title: s,
                button: s
            },
            position: {
                my: "top left",
                at: "bottom right",
                target: s,
                container: s,
                viewport: s,
                adjust: {
                    x: 0,
                    y: 0,
                    mouse: i,
                    scroll: i,
                    resize: i,
                    method: "flipinvert flipinvert"
                },
                effect: function(e, t, n) {
                    r(this).animate(t, {
                        duration: 200,
                        queue: s
                    })
                }
            },
            show: {
                target: s,
                event: "mouseenter",
                effect: i,
                delay: 90,
                solo: s,
                ready: s,
                autofocus: s
            },
            hide: {
                target: s,
                event: "mouseleave",
                effect: i,
                delay: 0,
                fixed: s,
                inactive: s,
                leave: "window",
                distance: s
            },
            style: {
                classes: "",
                widget: s,
                width: s,
                height: s,
                def: i
            },
            events: {
                render: o,
                move: o,
                show: o,
                hide: o,
                toggle: o,
                visible: o,
                hidden: o,
                focus: o,
                blur: o
            }
        };
        var nt, rt = ".qtip-tip",
        it = "margin",
        st = "border",
        ot = "color",
        ut = "background-color",
        at = "transparent",
        ft = " !important",
        lt = !!t.createElement("canvas").getContext,
        ct = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,
        pt = {},
        dt = ["Webkit", "O", "Moz", "ms"];
        if (!lt) var gt = function(e, t, n) {
            return "<qtipvml:" + e + ' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" ' + (t || "") + ' style="behavior: url(#default#VML); ' + (n || "") + '" />'
        };
        else var yt = e.devicePixelRatio || 1,
        bt = function() {
            var e = t.createElement("canvas").getContext("2d");
            return e.backingStorePixelRatio || e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || 1
        } (),
        wt = yt / bt;
        r.extend(Et.prototype, {
            init: function(e) {
                var t, n;
                n = this.element = e.elements.tip = r("<div />", {
                    "class": T + "-tip"
                }).prependTo(e.tooltip),
                lt ? (t = r("<canvas />").appendTo(this.element)[0].getContext("2d"), t.lineJoin = "miter", t.miterLimit = 1e5, t.save()) : (t = gt("shape", 'coordorigin="0,0"', "position:absolute;"), this.element.html(t + t), e._bind(r("*", n).add(n), ["click", "mousedown"],
                function(e) {
                    e.stopPropagation()
                },
                this._ns)),
                e._bind(e.tooltip, "tooltipmove", this.reposition, this._ns, this),
                this.create()
            },
            _swapDimensions: function() {
                this.size[0] = this.options.height,
                this.size[1] = this.options.width
            },
            _resetDimensions: function() {
                this.size[0] = this.options.width,
                this.size[1] = this.options.height
            },
            _useTitle: function(e) {
                var t = this.qtip.elements.titlebar;
                return t && (e.y === c || e.y === v && this.element.position().top + this.size[1] / 2 + this.options.offset < t.outerHeight(i))
            },
            _parseCorner: function(e) {
                var t = this.qtip.options.position.my;
                return e === s || t === s ? e = s: e === i ? e = new E(t.string()) : e.string || (e = new E(e), e.fixed = i),
                e
            },
            _parseWidth: function(e, t, n) {
                var r = this.qtip.elements,
                i = st + ht(t) + "Width";
                return (n ? mt(n, i) : mt(r.content, i) || mt(this._useTitle(e) && r.titlebar || r.content, i) || mt(r.tooltip, i)) || 0
            },
            _parseRadius: function(e) {
                var t = this.qtip.elements,
                n = st + ht(e.y) + ht(e.x) + "Radius";
                return F.ie < 9 ? 0 : mt(this._useTitle(e) && t.titlebar || t.content, n) || mt(t.tooltip, n) || 0
            },
            _invalidColour: function(e, t, n) {
                var r = e.css(t);
                return ! r || n && r === e.css(n) || ct.test(r) ? s: r
            },
            _parseColours: function(e) {
                var t = this.qtip.elements,
                n = this.element.css("cssText", ""),
                i = st + ht(e[e.precedance]) + ht(ot),
                s = this._useTitle(e) && t.titlebar || t.content,
                o = this._invalidColour,
                u = [];
                return u[0] = o(n, ut) || o(s, ut) || o(t.content, ut) || o(t.tooltip, ut) || n.css(ut),
                u[1] = o(n, i, ot) || o(s, i, ot) || o(t.content, i, ot) || o(t.tooltip, i, ot) || t.tooltip.css(i),
                r("*", n).add(n).css("cssText", ut + ":" + at + ft + ";" + st + ":0" + ft + ";"),
                u
            },
            _calculateSize: function(e) {
                var t = e.precedance === a,
                n = this.options.width,
                r = this.options.height,
                i = e.abbrev() === "c",
                s = (t ? n: r) * (i ? .5 : 1),
                o = Math.pow,
                u = Math.round,
                f,
                l,
                c,
                h = Math.sqrt(o(s, 2) + o(r, 2)),
                p = [this.border / s * h, this.border / r * h];
                return p[2] = Math.sqrt(o(p[0], 2) - o(this.border, 2)),
                p[3] = Math.sqrt(o(p[1], 2) - o(this.border, 2)),
                f = h + p[2] + p[3] + (i ? 0 : p[0]),
                l = f / h,
                c = [u(l * n), u(l * r)],
                t ? c: c.reverse()
            },
            _calculateTip: function(e, t, n) {
                n = n || 1,
                t = t || this.size;
                var r = t[0] * n,
                i = t[1] * n,
                s = Math.ceil(r / 2),
                o = Math.ceil(i / 2),
                u = {
                    br: [0, 0, r, i, r, 0],
                    bl: [0, 0, r, 0, 0, i],
                    tr: [0, i, r, 0, r, i],
                    tl: [0, 0, 0, i, r, i],
                    tc: [0, i, s, 0, r, i],
                    bc: [0, 0, r, 0, s, i],
                    rc: [0, 0, r, o, 0, i],
                    lc: [r, 0, r, i, 0, o]
                };
                return u.lt = u.br,
                u.rt = u.bl,
                u.lb = u.tr,
                u.rb = u.tl,
                u[e.abbrev()]
            },
            _drawCoords: function(e, t) {
                e.beginPath(),
                e.moveTo(t[0], t[1]),
                e.lineTo(t[2], t[3]),
                e.lineTo(t[4], t[5]),
                e.closePath()
            },
            create: function() {
                var e = this.corner = (lt || F.ie) && this._parseCorner(this.options.corner);
                if (this.enabled = !!this.corner && this.corner.abbrev() !== "c") this.qtip.cache.corner = e.clone(),
                this.update();
                return this.element.toggle(this.enabled),
                this.corner
            },
            update: function(t, n) {
                if (!this.enabled) return this;
                var o = this.qtip.elements,
                m = this.element,
                g = m.children(),
                y = this.options,
                b = this.size,
                w = y.mimic,
                S = Math.round,
                x,
                T,
                N,
                C,
                k,
                L,
                A,
                O,
                M;
                t || (t = this.qtip.cache.corner || this.corner),
                w === s ? w = t: (w = new E(w), w.precedance = t.precedance, w.x === "inherit" ? w.x = t.x: w.y === "inherit" ? w.y = t.y: w.x === w.y && (w[t.precedance] = t[t.precedance])),
                T = w.precedance,
                t.precedance === u ? this._swapDimensions() : this._resetDimensions(),
                x = this.color = this._parseColours(t),
                x[1] !== at ? (O = this.border = this._parseWidth(t, t[t.precedance]), y.border && O < 1 && !ct.test(x[1]) && (x[0] = x[1]), this.border = O = y.border !== i ? y.border: O) : this.border = O = 0,
                A = this.size = this._calculateSize(t),
                m.css({
                    width: A[0],
                    height: A[1],
                    lineHeight: A[1] + "px"
                }),
                t.precedance === a ? L = [S(w.x === h ? O: w.x === d ? A[0] - b[0] - O: (A[0] - b[0]) / 2), S(w.y === c ? A[1] - b[1] : 0)] : L = [S(w.x === h ? A[0] - b[0] : 0), S(w.y === c ? O: w.y === p ? A[1] - b[1] - O: (A[1] - b[1]) / 2)],
                lt ? (N = g[0].getContext("2d"), N.restore(), N.save(), N.clearRect(0, 0, 6e3, 6e3), C = this._calculateTip(w, b, wt), k = this._calculateTip(w, this.size, wt), g.attr(f, A[0] * wt).attr(l, A[1] * wt), g.css(f, A[0]).css(l, A[1]), this._drawCoords(N, k), N.fillStyle = x[1], N.fill(), N.translate(L[0] * wt, L[1] * wt), this._drawCoords(N, C), N.fillStyle = x[0], N.fill()) : (C = this._calculateTip(w), C = "m" + C[0] + "," + C[1] + " l" + C[2] + "," + C[3] + " " + C[4] + "," + C[5] + " xe", L[2] = O && /^(r|b)/i.test(t.string()) ? F.ie === 8 ? 2 : 1 : 0, g.css({
                    coordsize: A[0] + O + " " + (A[1] + O),
                    antialias: "" + (w.string().indexOf(v) > -1),
                    left: L[0] - L[2] * Number(T === u),
                    top: L[1] - L[2] * Number(T === a),
                    width: A[0] + O,
                    height: A[1] + O
                }).each(function(e) {
                    var t = r(this);
                    t[t.prop ? "prop": "attr"]({
                        coordsize: A[0] + O + " " + (A[1] + O),
                        path: C,
                        fillcolor: x[0],
                        filled: !!e,
                        stroked: !e
                    }).toggle( !! O || !!e),
                    !e && t.html(gt("stroke", 'weight="' + O * 2 + 'px" color="' + x[1] + '" miterlimit="1000" joinstyle="miter"'))
                })),
                e.opera && setTimeout(function() {
                    o.tip.css({
                        display: "inline-block",
                        visibility: "visible"
                    })
                },
                1),
                n !== s && this.calculate(t, A)
            },
            calculate: function(e, t) {
                if (!this.enabled) return s;
                var n = this,
                i = this.qtip.elements,
                o = this.element,
                f = this.options.offset,
                l = i.tooltip.hasClass("ui-widget"),
                p = {},
                d,
                m;
                return e = e || this.corner,
                d = e.precedance,
                t = t || this._calculateSize(e),
                m = [e.x, e.y],
                d === u && m.reverse(),
                r.each(m,
                function(r, s) {
                    var o, u, l;
                    s === v ? (o = d === a ? h: c, p[o] = "50%", p[it + "-" + o] = -Math.round(t[d === a ? 0 : 1] / 2) + f) : (o = n._parseWidth(e, s, i.tooltip), u = n._parseWidth(e, s, i.content), l = n._parseRadius(e), p[s] = Math.max( - n.border, r ? u: f + (l > o ? l: -o)))
                }),
                p[e[d]] -= t[d === u ? 0 : 1],
                o.css({
                    margin: "",
                    top: "",
                    bottom: "",
                    left: "",
                    right: ""
                }).css(p),
                p
            },
            reposition: function(e, t, r, o) {
                function N(e, t, n, r, i) {
                    e === y && l.precedance === t && m[r] && l[n] !== v ? l.precedance = l.precedance === u ? a: u: e !== y && m[r] && (l[t] = l[t] === v ? m[r] > 0 ? r: i: l[t] === r ? i: r)
                }
                function C(e, t, i) {
                    l[e] === v ? x[it + "-" + t] = E[e] = S[it + "-" + t] - m[t] : (T = S[i] !== n ? [m[t], -S[t]] : [ - m[t], S[t]], (E[e] = Math.max(T[0], T[1])) > T[0] && (r[t] -= m[t], E[t] = s), x[S[i] !== n ? i: t] = E[e])
                }
                if (!this.enabled) return;
                var f = t.cache,
                l = this.corner.clone(),
                m = r.adjusted,
                g = t.options.position.adjust.method.split(" "),
                b = g[0],
                w = g[1] || g[0],
                E = {
                    left: s,
                    top: s,
                    x: 0,
                    y: 0
                },
                S,
                x = {},
                T;
                this.corner.fixed !== i && (N(b, u, a, h, d), N(w, a, u, c, p), (l.string() !== f.corner.string() || f.cornerTop !== m.top || f.cornerLeft !== m.left) && this.update(l, s)),
                S = this.calculate(l),
                S.right !== n && (S.left = -S.right),
                S.bottom !== n && (S.top = -S.bottom),
                S.user = this.offset,
                (E.left = b === y && !!m.left) && C(u, h, d),
                (E.top = w === y && !!m.top) && C(a, c, p),
                this.element.css(x).toggle(!(E.x && E.y || l.x === v && E.y || l.y === v && E.x)),
                r.left -= S.left.charAt ? S.user: b !== y || E.top || !E.left && !E.top ? S.left + this.border: 0,
                r.top -= S.top.charAt ? S.user: w !== y || E.left || !E.left && !E.top ? S.top + this.border: 0,
                f.cornerLeft = m.left,
                f.cornerTop = m.top,
                f.corner = l.clone()
            },
            destroy: function() {
                this.qtip._unbind(this.qtip.tooltip, this._ns),
                this.qtip.elements.tip && this.qtip.elements.tip.find("*").remove().end().remove()
            }
        }),
        nt = x.tip = function(e) {
            return new Et(e, e.options.style.tip)
        },
        nt.initialize = "render",
        nt.sanitize = function(e) {
            if (e.style && "tip" in e.style) {
                var t = e.style.tip;
                typeof t != "object" && (t = e.style.tip = {
                    corner: t
                }),
                /string|boolean/i.test(typeof t.corner) || (t.corner = i)
            }
        },
        S.tip = {
            "^position.my|style.tip.(corner|mimic|border)$": function() {
                this.create(),
                this.qtip.reposition()
            },
            "^style.tip.(height|width)$": function(e) {
                this.size = [e.width, e.height],
                this.update(),
                this.qtip.reposition()
            },
            "^content.title|style.(classes|widget)$": function() {
                this.update()
            }
        },
        r.extend(i, b.defaults, {
            style: {
                tip: {
                    corner: i,
                    mimic: s,
                    width: 6,
                    height: 6,
                    border: i,
                    offset: 0
                }
            }
        }),
        x.viewport = function(n, r, i, o, m, b, w) {
            function R(e, t, n, i, s, o, u, a, l) {
                var c = r[s],
                h = x[e],
                p = T[e],
                d = n === y,
                m = h === s ? l: h === o ? -l: -l / 2,
                b = p === s ? a: p === o ? -a: -a / 2,
                w = I[s] + q[s] - (B ? 0 : H[s]),
                E = w - c,
                S = c + l - (u === f ? j: F) - w,
                N = m - (x.precedance === e || h === x[t] ? b: 0) - (p === v ? a / 2 : 0);
                return d ? (N = (h === s ? 1 : -1) * m, r[s] += E > 0 ? E: S > 0 ? -S: 0, r[s] = Math.max( - H[s] + q[s], c - N, Math.min(Math.max( - H[s] + q[s] + (u === f ? j: F), c + N), r[s], h === "center" ? c - m: 1e9))) : (i *= n === g ? 2 : 0, E > 0 && (h !== s || S > 0) ? (r[s] -= N + i, P.invert(e, s)) : S > 0 && (h !== o || E > 0) && (r[s] -= (h === v ? -N: N) + i, P.invert(e, o)), r[s] < I && -r[s] > S && (r[s] = c, P = x.clone())),
                r[s] - c
            }
            var E = i.target,
            S = n.elements.tooltip,
            x = i.my,
            T = i.at,
            N = i.adjust,
            C = N.method.split(" "),
            k = C[0],
            L = C[1] || C[0],
            A = i.viewport,
            O = i.container,
            M = n.cache,
            _ = {
                left: 0,
                top: 0
            },
            D,
            P,
            H,
            B,
            j,
            F,
            I,
            q;
            if (!A.jquery || E[0] === e || E[0] === t.body || N.method === "none") return _;
            H = O.offset() || _,
            B = O.css("position") === "static",
            D = S.css("position") === "fixed",
            j = A[0] === e ? A.width() : A.outerWidth(s),
            F = A[0] === e ? A.height() : A.outerHeight(s),
            I = {
                left: D ? 0 : A.scrollLeft(),
                top: D ? 0 : A.scrollTop()
            },
            q = A.offset() || _;
            if (k !== "shift" || L !== "shift") P = x.clone();
            return _ = {
                left: k !== "none" ? R(u, a, k, N.x, h, d, f, o, b) : 0,
                top: L !== "none" ? R(a, u, L, N.y, c, p, l, m, w) : 0,
                my: P
            },
            _
        }
    })
} (window, document);
var ZeroClipboard = {
    version: "1.0.7",
    clients: {},
    moviePath: "zeroclipboard-1.0.7.swf",
    nextId: 1,
    $: function(e) {
        return typeof e == "string" && (e = document.getElementById(e)),
        e.addClass || (e.hide = function() {
            this.style.display = "none"
        },
        e.show = function() {
            this.style.display = ""
        },
        e.addClass = function(e) {
            this.removeClass(e),
            this.className += " " + e
        },
        e.removeClass = function(e) {
            var t = this.className.split(/\s+/),
            n = -1;
            for (var r = 0; r < t.length; r++) t[r] == e && (n = r, r = t.length);
            return n > -1 && (t.splice(n, 1), this.className = t.join(" ")),
            this
        },
        e.hasClass = function(e) {
            return !! this.className.match(new RegExp("\\s*" + e + "\\s*"))
        }),
        e
    },
    setMoviePath: function(e) {
        this.moviePath = e
    },
    dispatch: function(e, t, n) {
        var r = this.clients[e];
        r && r.receiveEvent(t, n)
    },
    register: function(e, t) {
        this.clients[e] = t
    },
    getDOMObjectPosition: function(e, t) {
        var n = {
            left: 0,
            top: 0,
            width: e.width ? e.width: e.offsetWidth,
            height: e.height ? e.height: e.offsetHeight
        };
        while (e && e != t) n.left += e.offsetLeft,
        n.top += e.offsetTop,
        e = e.offsetParent;
        return n
    },
    Client: function(e) {
        this.handlers = {},
        this.id = ZeroClipboard.nextId++,
        this.movieId = "ZeroClipboardMovie_" + this.id,
        ZeroClipboard.register(this.id, this),
        e && this.glue(e)
    }
};
ZeroClipboard.Client.prototype = {
    id: 0,
    ready: !1,
    movie: null,
    clipText: "",
    handCursorEnabled: !0,
    cssEffects: !0,
    handlers: null,
    glue: function(e, t, n) {
        this.domElement = ZeroClipboard.$(e);
        var r = 99;
        this.domElement.style.zIndex && (r = parseInt(this.domElement.style.zIndex, 10) + 1),
        typeof t == "string" ? t = ZeroClipboard.$(t) : typeof t == "undefined" && (t = document.getElementsByTagName("body")[0]);
        var i = ZeroClipboard.getDOMObjectPosition(this.domElement, t);
        this.div = document.createElement("div");
        var s = this.div.style;
        s.position = "absolute",
        s.left = "" + i.left + "px",
        s.top = "" + i.top + "px",
        s.width = "" + i.width + "px",
        s.height = "" + i.height + "px",
        s.zIndex = r;
        if (typeof n == "object") for (addedStyle in n) s[addedStyle] = n[addedStyle];
        t.appendChild(this.div),
        this.div.innerHTML = this.getHTML(i.width, i.height)
    },
    getHTML: function(e, t) {
        var n = "",
        r = "id=" + this.id + "&width=" + e + "&height=" + t;
        if (navigator.userAgent.match(/MSIE/)) {
            var i = location.href.match(/^https/i) ? "https://": "http://";
            n += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="' + i + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + e + '" height="' + t + '" id="' + this.movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard.moviePath + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="' + r + '"/><param name="wmode" value="transparent"/></object>'
        } else n += '<embed id="' + this.movieId + '" src="' + ZeroClipboard.moviePath + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="' + e + '" height="' + t + '" name="' + this.movieId + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + r + '" wmode="transparent" />';
        return n
    },
    hide: function() {
        this.div && (this.div.style.left = "-2000px")
    },
    show: function() {
        this.reposition()
    },
    destroy: function() {
        if (this.domElement && this.div) {
            this.hide(),
            this.div.innerHTML = "";
            var e = document.getElementsByTagName("body")[0];
            try {
                e.removeChild(this.div)
            } catch(t) {}
            this.domElement = null,
            this.div = null
        }
    },
    reposition: function(e) {
        e && (this.domElement = ZeroClipboard.$(e), this.domElement || this.hide());
        if (this.domElement && this.div) {
            var t = ZeroClipboard.getDOMObjectPosition(this.domElement),
            n = this.div.style;
            n.left = "" + t.left + "px",
            n.top = "" + t.top + "px"
        }
    },
    setText: function(e) {
        this.clipText = e,
        this.ready && this.movie.setText(e)
    },
    addEventListener: function(e, t) {
        e = e.toString().toLowerCase().replace(/^on/, ""),
        this.handlers[e] || (this.handlers[e] = []),
        this.handlers[e].push(t)
    },
    setHandCursor: function(e) {
        this.handCursorEnabled = e,
        this.ready && this.movie.setHandCursor(e)
    },
    setCSSEffects: function(e) {
        this.cssEffects = !!e
    },
    receiveEvent: function(e, t) {
        e = e.toString().toLowerCase().replace(/^on/, "");
        switch (e) {
        case "load":
            this.movie = document.getElementById(this.movieId);
            if (!this.movie) {
                var n = this;
                setTimeout(function() {
                    n.receiveEvent("load", null)
                },
                1);
                return
            }
            if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
                var n = this;
                setTimeout(function() {
                    n.receiveEvent("load", null)
                },
                100),
                this.ready = !0;
                return
            }
            this.ready = !0,
            this.movie.setText(this.clipText),
            this.movie.setHandCursor(this.handCursorEnabled);
            break;
        case "mouseover":
            this.domElement && this.cssEffects && (this.domElement.addClass("hover"), this.recoverActive && this.domElement.addClass("active"));
            break;
        case "mouseout":
            this.domElement && this.cssEffects && (this.recoverActive = !1, this.domElement.hasClass("active") && (this.domElement.removeClass("active"), this.recoverActive = !0), this.domElement.removeClass("hover"));
            break;
        case "mousedown":
            this.domElement && this.cssEffects && this.domElement.addClass("active");
            break;
        case "mouseup":
            this.domElement && this.cssEffects && (this.domElement.removeClass("active"), this.recoverActive = !1)
        }
        if (this.handlers[e]) for (var r = 0,
        i = this.handlers[e].length; r < i; r++) {
            var s = this.handlers[e][r];
            typeof s == "function" ? s(this, t) : typeof s == "object" && s.length == 2 ? s[0][s[1]](this, t) : typeof s == "string" && window[s](this, t)
        }
    }
},
function(e) {
    typeof define == "function" && define.amd ? define(["jquery"], e) : typeof exports == "object" ? module.exports = e: e(jQuery)
} (function(e) {
    function t(e) {
        return e && e.constructor === Number ? e + "px": e
    }
    e.fn.bgiframe = function(n) {
        n = e.extend({
            top: "auto",
            left: "auto",
            width: "auto",
            height: "auto",
            opacity: !0,
            src: "javascript:false;",
            conditional: /MSIE 6\.0/.test(navigator.userAgent)
        },
        n);
        if (!e.isFunction(n.conditional)) {
            var r = n.conditional;
            n.conditional = function() {
                return r
            }
        }
        var i = e('<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + n.src + '"' + 'style="display:block;position:absolute;z-index:-1;"/>');
        return this.each(function() {
            var r = e(this);
            if (n.conditional(this) === !1) return;
            var o = r.children("iframe.bgiframe"),
            u = o.length === 0 ? i.clone() : o;
            u.css({
                top: n.top == "auto" ? (parseInt(r.css("borderTopWidth"), 10) || 0) * -1 + "px": t(n.top),
                left: n.left == "auto" ? (parseInt(r.css("borderLeftWidth"), 10) || 0) * -1 + "px": t(n.left),
                width: n.width == "auto" ? this.offsetWidth + "px": t(n.width),
                height: n.height == "auto" ? this.offsetHeight + "px": t(n.height),
                opacity: n.opacity === !0 ? 0 : undefined
            }),
            o.length === 0 && r.prepend(u)
        })
    },
    e.fn.bgIframe = e.fn.bgiframe
}),
function(e) {
    typeof define == "function" && define.amd ? define(["jquery"], e) : typeof exports == "object" ? e(require("jquery")) : e(jQuery)
} (function(e) {
    function n(e) {
        return u.raw ? e: encodeURIComponent(e)
    }
    function r(e) {
        return u.raw ? e: decodeURIComponent(e)
    }
    function i(e) {
        return n(u.json ? JSON.stringify(e) : String(e))
    }
    function s(e) {
        e.indexOf('"') === 0 && (e = e.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"));
        try {
            return e = decodeURIComponent(e.replace(t, " ")),
            u.json ? JSON.parse(e) : e
        } catch(n) {}
    }
    function o(t, n) {
        var r = u.raw ? t: s(t);
        return e.isFunction(n) ? n(r) : r
    }
    var t = /\+/g,
    u = e.cookie = function(t, s, a) {
        if (s !== undefined && !e.isFunction(s)) {
            a = e.extend({},
            u.defaults, a);
            if (typeof a.expires == "number") {
                var f = a.expires,
                l = a.expires = new Date;
                l.setTime( + l + f * 864e5)
            }
            return document.cookie = [n(t), "=", i(s), a.expires ? "; expires=" + a.expires.toUTCString() : "", a.path ? "; path=" + a.path: "", a.domain ? "; domain=" + a.domain: "", a.secure ? "; secure": ""].join("")
        }
        var c = t ? undefined: {},
        h = document.cookie ? document.cookie.split("; ") : [];
        for (var p = 0,
        d = h.length; p < d; p++) {
            var v = h[p].split("="),
            m = r(v.shift()),
            g = v.join("=");
            if (t && t === m) {
                c = o(g, s);
                break
            } ! t && (g = o(g)) !== undefined && (c[m] = g)
        }
        return c
    };
    u.defaults = {},
    e.removeCookie = function(t, n) {
        return e.cookie(t) === undefined ? !1 : (e.cookie(t, "", e.extend({},
        n, {
            expires: -1
        })), !e.cookie(t))
    }
}),
function(e) {
    "use strict";
    typeof define == "function" && define.amd ? define(["jquery"], e) : e(typeof jQuery != "undefined" ? jQuery: window.Zepto)
} (function(e) {
    "use strict";
    function r(t) {
        var n = t.data;
        t.isDefaultPrevented() || (t.preventDefault(), e(t.target).ajaxSubmit(n))
    }
    function i(t) {
        var n = t.target,
        r = e(n);
        if (!r.is("[type=submit],[type=image]")) {
            var i = r.closest("[type=submit]");
            if (i.length === 0) return;
            n = i[0]
        }
        var s = this;
        s.clk = n;
        if (n.type == "image") if (t.offsetX !== undefined) s.clk_x = t.offsetX,
        s.clk_y = t.offsetY;
        else if (typeof e.fn.offset == "function") {
            var o = r.offset();
            s.clk_x = t.pageX - o.left,
            s.clk_y = t.pageY - o.top
        } else s.clk_x = t.pageX - n.offsetLeft,
        s.clk_y = t.pageY - n.offsetTop;
        setTimeout(function() {
            s.clk = s.clk_x = s.clk_y = null
        },
        100)
    }
    function s() {
        if (!e.fn.ajaxSubmit.debug) return;
        var t = "[jquery.form] " + Array.prototype.join.call(arguments, "");
        window.console && window.console.log ? window.console.log(t) : window.opera && window.opera.postError && window.opera.postError(t)
    }
    var t = {};
    t.fileapi = e("<input type='file'/>").get(0).files !== undefined,
    t.formdata = window.FormData !== undefined;
    var n = !!e.fn.prop;
    e.fn.attr2 = function() {
        if (!n) return this.attr.apply(this, arguments);
        var e = this.prop.apply(this, arguments);
        return e && e.jquery || typeof e == "string" ? e: this.attr.apply(this, arguments)
    },
    e.fn.ajaxSubmit = function(r) {
        function k(t) {
            var n = e.param(t, r.traditional).split("&"),
            i = n.length,
            s = [],
            o,
            u;
            for (o = 0; o < i; o++) n[o] = n[o].replace(/\+/g, " "),
            u = n[o].split("="),
            s.push([decodeURIComponent(u[0]), decodeURIComponent(u[1])]);
            return s
        }
        function L(t) {
            var n = new FormData;
            for (var s = 0; s < t.length; s++) n.append(t[s].name, t[s].value);
            if (r.extraData) {
                var o = k(r.extraData);
                for (s = 0; s < o.length; s++) o[s] && n.append(o[s][0], o[s][1])
            }
            r.data = null;
            var u = e.extend(!0, {},
            e.ajaxSettings, r, {
                contentType: !1,
                processData: !1,
                cache: !1,
                type: i || "POST"
            });
            r.uploadProgress && (u.xhr = function() {
                var t = e.ajaxSettings.xhr();
                return t.upload && t.upload.addEventListener("progress",
                function(e) {
                    var t = 0,
                    n = e.loaded || e.position,
                    i = e.total;
                    e.lengthComputable && (t = Math.ceil(n / i * 100)),
                    r.uploadProgress(e, n, i, t)
                },
                !1),
                t
            }),
            u.data = null;
            var a = u.beforeSend;
            return u.beforeSend = function(e, t) {
                r.formData ? t.data = r.formData: t.data = n,
                a && a.call(this, e, t)
            },
            e.ajax(u)
        }
        function A(t) {
            function T(e) {
                var t = null;
                try {
                    e.contentWindow && (t = e.contentWindow.document)
                } catch(n) {
                    s("cannot get iframe.contentWindow document: " + n)
                }
                if (t) return t;
                try {
                    t = e.contentDocument ? e.contentDocument: e.document
                } catch(n) {
                    s("cannot get iframe.contentDocument: " + n),
                    t = e.document
                }
                return t
            }
            function k() {
                function f() {
                    try {
                        var e = T(v).readyState;
                        s("state = " + e),
                        e && e.toLowerCase() == "uninitialized" && setTimeout(f, 50)
                    } catch(t) {
                        s("Server abort: ", t, " (", t.name, ")"),
                        _(x),
                        w && clearTimeout(w),
                        w = undefined
                    }
                }
                var t = a.attr2("target"),
                n = a.attr2("action"),
                r = "multipart/form-data",
                u = a.attr("enctype") || a.attr("encoding") || r;
                o.setAttribute("target", p),
                (!i || /post/i.test(i)) && o.setAttribute("method", "POST"),
                n != l.url && o.setAttribute("action", l.url),
                !l.skipEncodingOverride && (!i || /post/i.test(i)) && a.attr({
                    encoding: "multipart/form-data",
                    enctype: "multipart/form-data"
                }),
                l.timeout && (w = setTimeout(function() {
                    b = !0,
                    _(S)
                },
                l.timeout));
                var c = [];
                try {
                    if (l.extraData) for (var h in l.extraData) l.extraData.hasOwnProperty(h) && (e.isPlainObject(l.extraData[h]) && l.extraData[h].hasOwnProperty("name") && l.extraData[h].hasOwnProperty("value") ? c.push(e('<input type="hidden" name="' + l.extraData[h].name + '">').val(l.extraData[h].value).appendTo(o)[0]) : c.push(e('<input type="hidden" name="' + h + '">').val(l.extraData[h]).appendTo(o)[0]));
                    l.iframeTarget || d.appendTo("body"),
                    v.attachEvent ? v.attachEvent("onload", _) : v.addEventListener("load", _, !1),
                    setTimeout(f, 15);
                    try {
                        o.submit()
                    } catch(m) {
                        var g = document.createElement("form").submit;
                        g.apply(o)
                    }
                } finally {
                    o.setAttribute("action", n),
                    o.setAttribute("enctype", u),
                    t ? o.setAttribute("target", t) : a.removeAttr("target"),
                    e(c).remove()
                }
            }
            function _(t) {
                if (m.aborted || M) return;
                A = T(v),
                A || (s("cannot access response document"), t = x);
                if (t === S && m) {
                    m.abort("timeout"),
                    E.reject(m, "timeout");
                    return
                }
                if (t == x && m) {
                    m.abort("server abort"),
                    E.reject(m, "error", "server abort");
                    return
                }
                if (!A || A.location.href == l.iframeSrc) if (!b) return;
                v.detachEvent ? v.detachEvent("onload", _) : v.removeEventListener("load", _, !1);
                var n = "success",
                r;
                try {
                    if (b) throw "timeout";
                    var i = l.dataType == "xml" || A.XMLDocument || e.isXMLDoc(A);
                    s("isXml=" + i);
                    if (!i && window.opera && (A.body === null || !A.body.innerHTML) && --O) {
                        s("requeing onLoad callback, DOM not available"),
                        setTimeout(_, 250);
                        return
                    }
                    var o = A.body ? A.body: A.documentElement;
                    m.responseText = o ? o.innerHTML: null,
                    m.responseXML = A.XMLDocument ? A.XMLDocument: A,
                    i && (l.dataType = "xml"),
                    m.getResponseHeader = function(e) {
                        var t = {
                            "content-type": l.dataType
                        };
                        return t[e.toLowerCase()]
                    },
                    o && (m.status = Number(o.getAttribute("status")) || m.status, m.statusText = o.getAttribute("statusText") || m.statusText);
                    var u = (l.dataType || "").toLowerCase(),
                    a = /(json|script|text)/.test(u);
                    if (a || l.textarea) {
                        var f = A.getElementsByTagName("textarea")[0];
                        if (f) m.responseText = f.value,
                        m.status = Number(f.getAttribute("status")) || m.status,
                        m.statusText = f.getAttribute("statusText") || m.statusText;
                        else if (a) {
                            var c = A.getElementsByTagName("pre")[0],
                            p = A.getElementsByTagName("body")[0];
                            c ? m.responseText = c.textContent ? c.textContent: c.innerText: p && (m.responseText = p.textContent ? p.textContent: p.innerText)
                        }
                    } else u == "xml" && !m.responseXML && m.responseText && (m.responseXML = D(m.responseText));
                    try {
                        L = H(m, u, l)
                    } catch(g) {
                        n = "parsererror",
                        m.error = r = g || n
                    }
                } catch(g) {
                    s("error caught: ", g),
                    n = "error",
                    m.error = r = g || n
                }
                m.aborted && (s("upload aborted"), n = null),
                m.status && (n = m.status >= 200 && m.status < 300 || m.status === 304 ? "success": "error"),
                n === "success" ? (l.success && l.success.call(l.context, L, "success", m), E.resolve(m.responseText, "success", m), h && e.event.trigger("ajaxSuccess", [m, l])) : n && (r === undefined && (r = m.statusText), l.error && l.error.call(l.context, m, n, r), E.reject(m, "error", r), h && e.event.trigger("ajaxError", [m, l, r])),
                h && e.event.trigger("ajaxComplete", [m, l]),
                h && !--e.active && e.event.trigger("ajaxStop"),
                l.complete && l.complete.call(l.context, m, n),
                M = !0,
                l.timeout && clearTimeout(w),
                setTimeout(function() {
                    l.iframeTarget ? d.attr("src", l.iframeSrc) : d.remove(),
                    m.responseXML = null
                },
                100)
            }
            var o = a[0],
            u,
            f,
            l,
            h,
            p,
            d,
            v,
            m,
            g,
            y,
            b,
            w,
            E = e.Deferred();
            E.abort = function(e) {
                m.abort(e)
            };
            if (t) for (f = 0; f < c.length; f++) u = e(c[f]),
            n ? u.prop("disabled", !1) : u.removeAttr("disabled");
            l = e.extend(!0, {},
            e.ajaxSettings, r),
            l.context = l.context || l,
            p = "jqFormIO" + (new Date).getTime(),
            l.iframeTarget ? (d = e(l.iframeTarget), y = d.attr2("name"), y ? p = y: d.attr2("name", p)) : (d = e('<iframe name="' + p + '" src="' + l.iframeSrc + '" />'), d.css({
                position: "absolute",
                top: "-1000px",
                left: "-1000px"
            })),
            v = d[0],
            m = {
                aborted: 0,
                responseText: null,
                responseXML: null,
                status: 0,
                statusText: "n/a",
                getAllResponseHeaders: function() {},
                getResponseHeader: function() {},
                setRequestHeader: function() {},
                abort: function(t) {
                    var n = t === "timeout" ? "timeout": "aborted";
                    s("aborting upload... " + n),
                    this.aborted = 1;
                    try {
                        v.contentWindow.document.execCommand && v.contentWindow.document.execCommand("Stop")
                    } catch(r) {}
                    d.attr("src", l.iframeSrc),
                    m.error = n,
                    l.error && l.error.call(l.context, m, n, t),
                    h && e.event.trigger("ajaxError", [m, l, n]),
                    l.complete && l.complete.call(l.context, m, n)
                }
            },
            h = l.global,
            h && 0 === e.active++&&e.event.trigger("ajaxStart"),
            h && e.event.trigger("ajaxSend", [m, l]);
            if (l.beforeSend && l.beforeSend.call(l.context, m, l) === !1) return l.global && e.active--,
            E.reject(),
            E;
            if (m.aborted) return E.reject(),
            E;
            g = o.clk,
            g && (y = g.name, y && !g.disabled && (l.extraData = l.extraData || {},
            l.extraData[y] = g.value, g.type == "image" && (l.extraData[y + ".x"] = o.clk_x, l.extraData[y + ".y"] = o.clk_y)));
            var S = 1,
            x = 2,
            N = e("meta[name=csrf-token]").attr("content"),
            C = e("meta[name=csrf-param]").attr("content");
            C && N && (l.extraData = l.extraData || {},
            l.extraData[C] = N),
            l.forceSync ? k() : setTimeout(k, 10);
            var L, A, O = 50,
            M, D = e.parseXML ||
            function(e, t) {
                return window.ActiveXObject ? (t = new ActiveXObject("Microsoft.XMLDOM"), t.async = "false", t.loadXML(e)) : t = (new DOMParser).parseFromString(e, "text/xml"),
                t && t.documentElement && t.documentElement.nodeName != "parsererror" ? t: null
            },
            P = e.parseJSON ||
            function(e) {
                return window.eval("(" + e + ")")
            },
            H = function(t, n, r) {
                var i = t.getResponseHeader("content-type") || "",
                s = n === "xml" || !n && i.indexOf("xml") >= 0,
                o = s ? t.responseXML: t.responseText;
                return s && o.documentElement.nodeName === "parsererror" && e.error && e.error("parsererror"),
                r && r.dataFilter && (o = r.dataFilter(o, n)),
                typeof o == "string" && (n === "json" || !n && i.indexOf("json") >= 0 ? o = P(o) : (n === "script" || !n && i.indexOf("javascript") >= 0) && e.globalEval(o)),
                o
            };
            return E
        }
        if (!this.length) return s("ajaxSubmit: skipping submit process - no element selected"),
        this;
        var i, o, u, a = this;
        typeof r == "function" ? r = {
            success: r
        }: r === undefined && (r = {}),
        i = r.type || this.attr2("method"),
        o = r.url || this.attr2("action"),
        u = typeof o == "string" ? e.trim(o) : "",
        u = u || window.location.href || "",
        u && (u = (u.match(/^([^#]+)/) || [])[1]),
        r = e.extend(!0, {
            url: u,
            success: e.ajaxSettings.success,
            type: i || e.ajaxSettings.type,
            iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false": "about:blank"
        },
        r);
        var f = {};
        this.trigger("form-pre-serialize", [this, r, f]);
        if (f.veto) return s("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),
        this;
        if (r.beforeSerialize && r.beforeSerialize(this, r) === !1) return s("ajaxSubmit: submit aborted via beforeSerialize callback"),
        this;
        var l = r.traditional;
        l === undefined && (l = e.ajaxSettings.traditional);
        var c = [],
        h,
        p = this.formToArray(r.semantic, c);
        r.data && (r.extraData = r.data, h = e.param(r.data, l));
        if (r.beforeSubmit && r.beforeSubmit(p, this, r) === !1) return s("ajaxSubmit: submit aborted via beforeSubmit callback"),
        this;
        this.trigger("form-submit-validate", [p, this, r, f]);
        if (f.veto) return s("ajaxSubmit: submit vetoed via form-submit-validate trigger"),
        this;
        var d = e.param(p, l);
        h && (d = d ? d + "&" + h: h),
        r.type.toUpperCase() == "GET" ? (r.url += (r.url.indexOf("?") >= 0 ? "&": "?") + d, r.data = null) : r.data = d;
        var v = [];
        r.resetForm && v.push(function() {
            a.resetForm()
        }),
        r.clearForm && v.push(function() {
            a.clearForm(r.includeHidden)
        });
        if (!r.dataType && r.target) {
            var m = r.success ||
            function() {};
            v.push(function(t) {
                var n = r.replaceTarget ? "replaceWith": "html";
                e(r.target)[n](t).each(m, arguments)
            })
        } else r.success && v.push(r.success);
        r.success = function(e, t, n) {
            var i = r.context || this;
            for (var s = 0,
            o = v.length; s < o; s++) v[s].apply(i, [e, t, n || a, a])
        };
        if (r.error) {
            var g = r.error;
            r.error = function(e, t, n) {
                var i = r.context || this;
                g.apply(i, [e, t, n, a])
            }
        }
        if (r.complete) {
            var y = r.complete;
            r.complete = function(e, t) {
                var n = r.context || this;
                y.apply(n, [e, t, a])
            }
        }
        var b = e("input[type=file]:enabled", this).filter(function() {
            return e(this).val() !== ""
        }),
        w = b.length > 0,
        E = "multipart/form-data",
        S = a.attr("enctype") == E || a.attr("encoding") == E,
        x = t.fileapi && t.formdata;
        s("fileAPI :" + x);
        var T = (w || S) && !x,
        N;
        r.iframe !== !1 && (r.iframe || T) ? r.closeKeepAlive ? e.get(r.closeKeepAlive,
        function() {
            N = A(p)
        }) : N = A(p) : (w || S) && x ? N = L(p) : N = e.ajax(r),
        a.removeData("jqxhr").data("jqxhr", N);
        for (var C = 0; C < c.length; C++) c[C] = null;
        return this.trigger("form-submit-notify", [this, r]),
        this
    },
    e.fn.ajaxForm = function(t) {
        t = t || {},
        t.delegation = t.delegation && e.isFunction(e.fn.on);
        if (!t.delegation && this.length === 0) {
            var n = {
                s: this.selector,
                c: this.context
            };
            return ! e.isReady && n.s ? (s("DOM not ready, queuing ajaxForm"), e(function() {
                e(n.s, n.c).ajaxForm(t)
            }), this) : (s("terminating; zero elements found by selector" + (e.isReady ? "": " (DOM not ready)")), this)
        }
        return t.delegation ? (e(document).off("submit.form-plugin", this.selector, r).off("click.form-plugin", this.selector, i).on("submit.form-plugin", this.selector, t, r).on("click.form-plugin", this.selector, t, i), this) : this.ajaxFormUnbind().bind("submit.form-plugin", t, r).bind("click.form-plugin", t, i)
    },
    e.fn.ajaxFormUnbind = function() {
        return this.unbind("submit.form-plugin click.form-plugin")
    },
    e.fn.formToArray = function(n, r) {
        var i = [];
        if (this.length === 0) return i;
        var s = this[0],
        o = this.attr("id"),
        u = n ? s.getElementsByTagName("*") : s.elements,
        a;
        u && !/MSIE [678]/.test(navigator.userAgent) && (u = e(u).get()),
        o && (a = e(":input[form=" + o + "]").get(), a.length && (u = (u || []).concat(a)));
        if (!u || !u.length) return i;
        var f, l, c, h, p, d, v;
        for (f = 0, d = u.length; f < d; f++) {
            p = u[f],
            c = p.name;
            if (!c || p.disabled) continue;
            if (n && s.clk && p.type == "image") {
                s.clk == p && (i.push({
                    name: c,
                    value: e(p).val(),
                    type: p.type
                }), i.push({
                    name: c + ".x",
                    value: s.clk_x
                },
                {
                    name: c + ".y",
                    value: s.clk_y
                }));
                continue
            }
            h = e.fieldValue(p, !0);
            if (h && h.constructor == Array) {
                r && r.push(p);
                for (l = 0, v = h.length; l < v; l++) i.push({
                    name: c,
                    value: h[l]
                })
            } else if (t.fileapi && p.type == "file") {
                r && r.push(p);
                var m = p.files;
                if (m.length) for (l = 0; l < m.length; l++) i.push({
                    name: c,
                    value: m[l],
                    type: p.type
                });
                else i.push({
                    name: c,
                    value: "",
                    type: p.type
                })
            } else h !== null && typeof h != "undefined" && (r && r.push(p), i.push({
                name: c,
                value: h,
                type: p.type,
                required: p.required
            }))
        }
        if (!n && s.clk) {
            var g = e(s.clk),
            y = g[0];
            c = y.name,
            c && !y.disabled && y.type == "image" && (i.push({
                name: c,
                value: g.val()
            }), i.push({
                name: c + ".x",
                value: s.clk_x
            },
            {
                name: c + ".y",
                value: s.clk_y
            }))
        }
        return i
    },
    e.fn.formSerialize = function(t) {
        return e.param(this.formToArray(t))
    },
    e.fn.fieldSerialize = function(t) {
        var n = [];
        return this.each(function() {
            var r = this.name;
            if (!r) return;
            var i = e.fieldValue(this, t);
            if (i && i.constructor == Array) for (var s = 0,
            o = i.length; s < o; s++) n.push({
                name: r,
                value: i[s]
            });
            else i !== null && typeof i != "undefined" && n.push({
                name: this.name,
                value: i
            })
        }),
        e.param(n)
    },
    e.fn.fieldValue = function(t) {
        for (var n = [], r = 0, i = this.length; r < i; r++) {
            var s = this[r],
            o = e.fieldValue(s, t);
            if (o === null || typeof o == "undefined" || o.constructor == Array && !o.length) continue;
            o.constructor == Array ? e.merge(n, o) : n.push(o)
        }
        return n
    },
    e.fieldValue = function(t, n) {
        var r = t.name,
        i = t.type,
        s = t.tagName.toLowerCase();
        n === undefined && (n = !0);
        if (n && (!r || t.disabled || i == "reset" || i == "button" || (i == "checkbox" || i == "radio") && !t.checked || (i == "submit" || i == "image") && t.form && t.form.clk != t || s == "select" && t.selectedIndex == -1)) return null;
        if (s == "select") {
            var o = t.selectedIndex;
            if (o < 0) return null;
            var u = [],
            a = t.options,
            f = i == "select-one",
            l = f ? o + 1 : a.length;
            for (var c = f ? o: 0; c < l; c++) {
                var h = a[c];
                if (h.selected) {
                    var p = h.value;
                    p || (p = h.attributes && h.attributes.value && !h.attributes.value.specified ? h.text: h.value);
                    if (f) return p;
                    u.push(p)
                }
            }
            return u
        }
        return e(t).val()
    },
    e.fn.clearForm = function(t) {
        return this.each(function() {
            e("input,select,textarea", this).clearFields(t)
        })
    },
    e.fn.clearFields = e.fn.clearInputs = function(t) {
        var n = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;
        return this.each(function() {
            var r = this.type,
            i = this.tagName.toLowerCase();
            n.test(r) || i == "textarea" ? this.value = "": r == "checkbox" || r == "radio" ? this.checked = !1 : i == "select" ? this.selectedIndex = -1 : r == "file" ? /MSIE/.test(navigator.userAgent) ? e(this).replaceWith(e(this).clone(!0)) : e(this).val("") : t && (t === !0 && /hidden/.test(r) || typeof t == "string" && e(this).is(t)) && (this.value = "")
        })
    },
    e.fn.resetForm = function() {
        return this.each(function() { (typeof this.reset == "function" || typeof this.reset == "object" && !this.reset.nodeType) && this.reset()
        })
    },
    e.fn.enable = function(e) {
        return e === undefined && (e = !0),
        this.each(function() {
            this.disabled = !e
        })
    },
    e.fn.selected = function(t) {
        return t === undefined && (t = !0),
        this.each(function() {
            var n = this.type;
            if (n == "checkbox" || n == "radio") this.checked = t;
            else if (this.tagName.toLowerCase() == "option") {
                var r = e(this).parent("select");
                t && r[0] && r[0].type == "select-one" && r.find("option").selected(!1),
                this.selected = t
            }
        })
    },
    e.fn.ajaxSubmit.debug = !1
}),
function(e, t) {
    typeof exports == "object" ? module.exports = t() : typeof define == "function" && define.amd ? define(t) : e.Spinner = t()
} (this,
function() {
    "use strict";
    function r(e, t) {
        var n = document.createElement(e || "div"),
        r;
        for (r in t) n[r] = t[r];
        return n
    }
    function i(e) {
        for (var t = 1,
        n = arguments.length; t < n; t++) e.appendChild(arguments[t]);
        return e
    }
    function o(e, r, i, o) {
        var u = ["opacity", r, ~~ (e * 100), i, o].join("-"),
        a = .01 + i / o * 100,
        f = Math.max(1 - (1 - e) / r * (100 - a), e),
        l = n.substring(0, n.indexOf("Animation")).toLowerCase(),
        c = l && "-" + l + "-" || "";
        return t[u] || (s.insertRule("@" + c + "keyframes " + u + "{" + "0%{opacity:" + f + "}" + a + "%{opacity:" + e + "}" + (a + .01) + "%{opacity:1}" + (a + r) % 100 + "%{opacity:" + e + "}" + "100%{opacity:" + f + "}" + "}", s.cssRules.length), t[u] = 1),
        u
    }
    function u(t, n) {
        var r = t.style,
        i, s;
        n = n.charAt(0).toUpperCase() + n.slice(1);
        for (s = 0; s < e.length; s++) {
            i = e[s] + n;
            if (r[i] !== undefined) return i
        }
        if (r[n] !== undefined) return n
    }
    function a(e, t) {
        for (var n in t) e.style[u(e, n) || n] = t[n];
        return e
    }
    function f(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = arguments[t];
            for (var r in n) e[r] === undefined && (e[r] = n[r])
        }
        return e
    }
    function l(e) {
        var t = {
            x: e.offsetLeft,
            y: e.offsetTop
        };
        while (e = e.offsetParent) t.x += e.offsetLeft,
        t.y += e.offsetTop;
        return t
    }
    function c(e, t) {
        return typeof e == "string" ? e: e[t % e.length]
    }
    function p(e) {
        this.opts = f(e || {},
        p.defaults, h)
    }
    function d() {
        function e(e, t) {
            return r("<" + e + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', t)
        }
        s.addRule(".spin-vml", "behavior:url(#default#VML)"),
        p.prototype.lines = function(t, n) {
            function o() {
                return a(e("group", {
                    coordsize: s + " " + s,
                    coordorigin: -r + " " + -r
                }), {
                    width: s,
                    height: s
                })
            }
            function h(t, s, u) {
                i(f, i(a(o(), {
                    rotation: 360 / n.lines * t + "deg",
                    left: ~~s
                }), i(a(e("roundrect", {
                    arcsize: n.corners
                }), {
                    width: r,
                    height: n.width,
                    left: n.radius,
                    top: -n.width >> 1,
                    filter: u
                }), e("fill", {
                    color: c(n.color, t),
                    opacity: n.opacity
                }), e("stroke", {
                    opacity: 0
                }))))
            }
            var r = n.length + n.width,
            s = 2 * r,
            u = -(n.width + n.length) * 2 + "px",
            f = a(o(), {
                position: "absolute",
                top: u,
                left: u
            }),
            l;
            if (n.shadow) for (l = 1; l <= n.lines; l++) h(l, -2, "progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");
            for (l = 1; l <= n.lines; l++) h(l);
            return i(t, f)
        },
        p.prototype.opacity = function(e, t, n, r) {
            var i = e.firstChild;
            r = r.shadow && r.lines || 0,
            i && t + r < i.childNodes.length && (i = i.childNodes[t + r], i = i && i.firstChild, i = i && i.firstChild, i && (i.opacity = n))
        }
    }
    var e = ["webkit", "Moz", "ms", "O"],
    t = {},
    n,
    s = function() {
        var e = r("style", {
            type: "text/css"
        });
        return i(document.getElementsByTagName("head")[0], e),
        e.sheet || e.styleSheet
    } (),
    h = {
        lines: 12,
        length: 7,
        width: 5,
        radius: 10,
        rotate: 0,
        corners: 1,
        color: "#000",
        direction: 1,
        speed: 1,
        trail: 100,
        opacity: .25,
        fps: 20,
        zIndex: 2e9,
        className: "spinner",
        top: "50%",
        left: "50%",
        position: "absolute"
    };
    p.defaults = {},
    f(p.prototype, {
        spin: function(e) {
            this.stop();
            var t = this,
            i = t.opts,
            s = t.el = a(r(0, {
                className: i.className
            }), {
                position: i.position,
                width: 0,
                zIndex: i.zIndex
            }),
            o = i.radius + i.length + i.width;
            a(s, {
                left: i.left,
                top: i.top
            }),
            e && e.insertBefore(s, e.firstChild || null),
            s.setAttribute("role", "progressbar"),
            t.lines(s, t.opts);
            if (!n) {
                var u = 0,
                f = (i.lines - 1) * (1 - i.direction) / 2,
                l,
                c = i.fps,
                h = c / i.speed,
                p = (1 - i.opacity) / (h * i.trail / 100),
                d = h / i.lines; (function v() {
                    u++;
                    for (var e = 0; e < i.lines; e++) l = Math.max(1 - (u + (i.lines - e) * d) % h * p, i.opacity),
                    t.opacity(s, e * i.direction + f, l, i);
                    t.timeout = t.el && setTimeout(v, ~~ (1e3 / c))
                })()
            }
            return t
        },
        stop: function() {
            var e = this.el;
            return e && (clearTimeout(this.timeout), e.parentNode && e.parentNode.removeChild(e), this.el = undefined),
            this
        },
        lines: function(e, t) {
            function l(e, n) {
                return a(r(), {
                    position: "absolute",
                    width: t.length + t.width + "px",
                    height: t.width + "px",
                    background: e,
                    boxShadow: n,
                    transformOrigin: "left",
                    transform: "rotate(" + ~~ (360 / t.lines * s + t.rotate) + "deg) translate(" + t.radius + "px" + ",0)",
                    borderRadius: (t.corners * t.width >> 1) + "px"
                })
            }
            var s = 0,
            u = (t.lines - 1) * (1 - t.direction) / 2,
            f;
            for (; s < t.lines; s++) f = a(r(), {
                position: "absolute",
                top: 1 + ~ (t.width / 2) + "px",
                transform: t.hwaccel ? "translate3d(0,0,0)": "",
                opacity: t.opacity,
                animation: n && o(t.opacity, t.trail, u + s * t.direction, t.lines) + " " + 1 / t.speed + "s linear infinite"
            }),
            t.shadow && i(f, a(l("#000", "0 0 4px #000"), {
                top: "2px"
            })),
            i(e, i(f, l(c(t.color, s), "0 0 1px rgba(0,0,0,.1)")));
            return e
        },
        opacity: function(e, t, n) {
            t < e.childNodes.length && (e.childNodes[t].style.opacity = n)
        }
    });
    var v = a(r("group"), {
        behavior: "url(#default#VML)"
    });
    return ! u(v, "transform") && v.adj ? d() : n = u(v, "animation"),
    p
}),
function(e) {
    function Z(e, t, n) {
        switch (arguments.length) {
        case 2:
            return e != null ? e: t;
        case 3:
            return e != null ? e: t != null ? t: n;
        default:
            throw new Error("Implement me")
        }
    }
    function et() {
        return {
            empty:
            !1,
            unusedTokens: [],
            unusedInput: [],
            overflow: -2,
            charsLeftOver: 0,
            nullInput: !1,
            invalidMonth: null,
            invalidFormat: !1,
            userInvalidated: !1,
            iso: !1
        }
    }
    function tt(e, n) {
        function i() {
            t.suppressDeprecationWarnings === !1 && typeof console != "undefined" && console.warn && console.warn("Deprecation warning: " + e)
        }
        var r = !0;
        return ut(function() {
            return r && (i(), r = !1),
            n.apply(this, arguments)
        },
        n)
    }
    function nt(e, t) {
        return function(n) {
            return lt(e.call(this, n), t)
        }
    }
    function rt(e, t) {
        return function(n) {
            return this.lang().ordinal(e.call(this, n), t)
        }
    }
    function it() {}
    function st(e) {
        Nt(e),
        ut(this, e)
    }
    function ot(e) {
        var t = yt(e),
        n = t.year || 0,
        r = t.quarter || 0,
        i = t.month || 0,
        s = t.week || 0,
        o = t.day || 0,
        u = t.hour || 0,
        a = t.minute || 0,
        f = t.second || 0,
        l = t.millisecond || 0;
        this._milliseconds = +l + f * 1e3 + a * 6e4 + u * 36e5,
        this._days = +o + s * 7,
        this._months = +i + r * 3 + n * 12,
        this._data = {},
        this._bubble()
    }
    function ut(e, t) {
        for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
        return t.hasOwnProperty("toString") && (e.toString = t.toString),
        t.hasOwnProperty("valueOf") && (e.valueOf = t.valueOf),
        e
    }
    function at(e) {
        var t = {},
        n;
        for (n in e) e.hasOwnProperty(n) && v.hasOwnProperty(n) && (t[n] = e[n]);
        return t
    }
    function ft(e) {
        return e < 0 ? Math.ceil(e) : Math.floor(e)
    }
    function lt(e, t, n) {
        var r = "" + Math.abs(e),
        i = e >= 0;
        while (r.length < t) r = "0" + r;
        return (i ? n ? "+": "": "-") + r
    }
    function ct(e, t) {
        var n = {
            milliseconds: 0,
            months: 0
        };
        return n.months = t.month() - e.month() + (t.year() - e.year()) * 12,
        e.clone().add(n.months, "M").isAfter(t) && --n.months,
        n.milliseconds = +t - +e.clone().add(n.months, "M"),
        n
    }
    function ht(e, t) {
        var n;
        return t = Lt(t, e),
        e.isBefore(t) ? n = ct(e, t) : (n = ct(t, e), n.milliseconds = -n.milliseconds, n.months = -n.months),
        n
    }
    function pt(e, n, r, i) {
        var s = n._milliseconds,
        o = n._days,
        u = n._months;
        i = i == null ? !0 : i,
        s && e._d.setTime( + e._d + s * r),
        o && an(e, "Date", un(e, "Date") + o * r),
        u && on(e, un(e, "Month") + u * r),
        i && t.updateOffset(e, o || u)
    }
    function dt(e) {
        return Object.prototype.toString.call(e) === "[object Array]"
    }
    function vt(e) {
        return Object.prototype.toString.call(e) === "[object Date]" || e instanceof Date
    }
    function mt(e, t, n) {
        var r = Math.min(e.length, t.length),
        i = Math.abs(e.length - t.length),
        s = 0,
        o;
        for (o = 0; o < r; o++)(n && e[o] !== t[o] || !n && wt(e[o]) !== wt(t[o])) && s++;
        return s + i
    }
    function gt(e) {
        if (e) {
            var t = e.toLowerCase().replace(/(.)s$/, "$1");
            e = X[e] || V[t] || t
        }
        return e
    }
    function yt(e) {
        var t = {},
        n, r;
        for (r in e) e.hasOwnProperty(r) && (n = gt(r), n && (t[n] = e[r]));
        return t
    }
    function bt(n) {
        var r, i;
        if (n.indexOf("week") === 0) r = 7,
        i = "day";
        else {
            if (n.indexOf("month") !== 0) return;
            r = 12,
            i = "month"
        }
        t[n] = function(s, o) {
            var u, a, f = t.fn._lang[n],
            l = [];
            typeof s == "number" && (o = s, s = e),
            a = function(e) {
                var n = t().utc().set(i, e);
                return f.call(t.fn._lang, n, s || "")
            };
            if (o != null) return a(o);
            for (u = 0; u < r; u++) l.push(a(u));
            return l
        }
    }
    function wt(e) {
        var t = +e,
        n = 0;
        return t !== 0 && isFinite(t) && (t >= 0 ? n = Math.floor(t) : n = Math.ceil(t)),
        n
    }
    function Et(e, t) {
        return (new Date(Date.UTC(e, t + 1, 0))).getUTCDate()
    }
    function St(e, n, r) {
        return tn(t([e, 11, 31 + n - r]), n, r).week
    }
    function xt(e) {
        return Tt(e) ? 366 : 365
    }
    function Tt(e) {
        return e % 4 === 0 && e % 100 !== 0 || e % 400 === 0
    }
    function Nt(e) {
        var t;
        e._a && e._pf.overflow === -2 && (t = e._a[a] < 0 || e._a[a] > 11 ? a: e._a[f] < 1 || e._a[f] > Et(e._a[u], e._a[a]) ? f: e._a[l] < 0 || e._a[l] > 23 ? l: e._a[c] < 0 || e._a[c] > 59 ? c: e._a[h] < 0 || e._a[h] > 59 ? h: e._a[p] < 0 || e._a[p] > 999 ? p: -1, e._pf._overflowDayOfYear && (t < u || t > f) && (t = f), e._pf.overflow = t)
    }
    function Ct(e) {
        return e._isValid == null && (e._isValid = !isNaN(e._d.getTime()) && e._pf.overflow < 0 && !e._pf.empty && !e._pf.invalidMonth && !e._pf.nullInput && !e._pf.invalidFormat && !e._pf.userInvalidated, e._strict && (e._isValid = e._isValid && e._pf.charsLeftOver === 0 && e._pf.unusedTokens.length === 0)),
        e._isValid
    }
    function kt(e) {
        return e ? e.toLowerCase().replace("_", "-") : e
    }
    function Lt(e, n) {
        return n._isUTC ? t(e).zone(n._offset || 0) : t(e).local()
    }
    function At(e, t) {
        return t.abbr = e,
        d[e] || (d[e] = new it),
        d[e].set(t),
        d[e]
    }
    function Ot(e) {
        delete d[e]
    }
    function Mt(e) {
        var n = 0,
        r, i, s, o, u = function(e) {
            if (!d[e] && m) try {
                require("./lang/" + e)
            } catch(t) {}
            return d[e]
        };
        if (!e) return t.fn._lang;
        if (!dt(e)) {
            i = u(e);
            if (i) return i;
            e = [e]
        }
        while (n < e.length) {
            o = kt(e[n]).split("-"),
            r = o.length,
            s = kt(e[n + 1]),
            s = s ? s.split("-") : null;
            while (r > 0) {
                i = u(o.slice(0, r).join("-"));
                if (i) return i;
                if (s && s.length >= r && mt(o, s, !0) >= r - 1) break;
                r--
            }
            n++
        }
        return t.fn._lang
    }
    function _t(e) {
        return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
    }
    function Dt(e) {
        var t = e.match(w),
        n,
        r;
        for (n = 0, r = t.length; n < r; n++) G[t[n]] ? t[n] = G[t[n]] : t[n] = _t(t[n]);
        return function(i) {
            var s = "";
            for (n = 0; n < r; n++) s += t[n] instanceof Function ? t[n].call(i, e) : t[n];
            return s
        }
    }
    function Pt(e, t) {
        return e.isValid() ? (t = Ht(t, e.lang()), $[t] || ($[t] = Dt(t)), $[t](e)) : e.lang().invalidDate()
    }
    function Ht(e, t) {
        function r(e) {
            return t.longDateFormat(e) || e
        }
        var n = 5;
        E.lastIndex = 0;
        while (n >= 0 && E.test(e)) e = e.replace(E, r),
        E.lastIndex = 0,
        n -= 1;
        return e
    }
    function Bt(e, t) {
        var n, r = t._strict;
        switch (e) {
        case "Q":
            return _;
        case "DDDD":
            return P;
        case "YYYY":
        case "GGGG":
        case "gggg":
            return r ? H: T;
        case "Y":
        case "G":
        case "g":
            return j;
        case "YYYYYY":
        case "YYYYY":
        case "GGGGG":
        case "ggggg":
            return r ? B: N;
        case "S":
            if (r) return _;
        case "SS":
            if (r) return D;
        case "SSS":
            if (r) return P;
        case "DDD":
            return x;
        case "MMM":
        case "MMMM":
        case "dd":
        case "ddd":
        case "dddd":
            return k;
        case "a":
        case "A":
            return Mt(t._l)._meridiemParse;
        case "X":
            return O;
        case "Z":
        case "ZZ":
            return L;
        case "T":
            return A;
        case "SSSS":
            return C;
        case "MM":
        case "DD":
        case "YY":
        case "GG":
        case "gg":
        case "HH":
        case "hh":
        case "mm":
        case "ss":
        case "ww":
        case "WW":
            return r ? D: S;
        case "M":
        case "D":
        case "d":
        case "H":
        case "h":
        case "m":
        case "s":
        case "w":
        case "W":
        case "e":
        case "E":
            return S;
        case "Do":
            return M;
        default:
            return n = new RegExp(Xt(Wt(e.replace("\\", "")), "i")),
            n
        }
    }
    function jt(e) {
        e = e || "";
        var t = e.match(L) || [],
        n = t[t.length - 1] || [],
        r = (n + "").match(U) || ["-", 0, 0],
        i = +(r[1] * 60) + wt(r[2]);
        return r[0] === "+" ? -i: i
    }
    function Ft(e, n, r) {
        var i, s = r._a;
        switch (e) {
        case "Q":
            n != null && (s[a] = (wt(n) - 1) * 3);
            break;
        case "M":
        case "MM":
            n != null && (s[a] = wt(n) - 1);
            break;
        case "MMM":
        case "MMMM":
            i = Mt(r._l).monthsParse(n),
            i != null ? s[a] = i: r._pf.invalidMonth = n;
            break;
        case "D":
        case "DD":
            n != null && (s[f] = wt(n));
            break;
        case "Do":
            n != null && (s[f] = wt(parseInt(n, 10)));
            break;
        case "DDD":
        case "DDDD":
            n != null && (r._dayOfYear = wt(n));
            break;
        case "YY":
            s[u] = t.parseTwoDigitYear(n);
            break;
        case "YYYY":
        case "YYYYY":
        case "YYYYYY":
            s[u] = wt(n);
            break;
        case "a":
        case "A":
            r._isPm = Mt(r._l).isPM(n);
            break;
        case "H":
        case "HH":
        case "h":
        case "hh":
            s[l] = wt(n);
            break;
        case "m":
        case "mm":
            s[c] = wt(n);
            break;
        case "s":
        case "ss":
            s[h] = wt(n);
            break;
        case "S":
        case "SS":
        case "SSS":
        case "SSSS":
            s[p] = wt(("0." + n) * 1e3);
            break;
        case "X":
            r._d = new Date(parseFloat(n) * 1e3);
            break;
        case "Z":
        case "ZZ":
            r._useUTC = !0,
            r._tzm = jt(n);
            break;
        case "dd":
        case "ddd":
        case "dddd":
            i = Mt(r._l).weekdaysParse(n),
            i != null ? (r._w = r._w || {},
            r._w.d = i) : r._pf.invalidWeekday = n;
            break;
        case "w":
        case "ww":
        case "W":
        case "WW":
        case "d":
        case "e":
        case "E":
            e = e.substr(0, 1);
        case "gggg":
        case "GGGG":
        case "GGGGG":
            e = e.substr(0, 2),
            n && (r._w = r._w || {},
            r._w[e] = wt(n));
            break;
        case "gg":
        case "GG":
            r._w = r._w || {},
            r._w[e] = t.parseTwoDigitYear(n)
        }
    }
    function It(e) {
        var n, r, i, s, o, a, f, l;
        n = e._w,
        n.GG != null || n.W != null || n.E != null ? (o = 1, a = 4, r = Z(n.GG, e._a[u], tn(t(), 1, 4).year), i = Z(n.W, 1), s = Z(n.E, 1)) : (l = Mt(e._l), o = l._week.dow, a = l._week.doy, r = Z(n.gg, e._a[u], tn(t(), o, a).year), i = Z(n.w, 1), n.d != null ? (s = n.d, s < o && ++i) : n.e != null ? s = n.e + o: s = o),
        f = nn(r, i, s, a, o),
        e._a[u] = f.year,
        e._dayOfYear = f.dayOfYear
    }
    function qt(e) {
        var t, n, r = [],
        i,
        s;
        if (e._d) return;
        i = Ut(e),
        e._w && e._a[f] == null && e._a[a] == null && It(e),
        e._dayOfYear && (s = Z(e._a[u], i[u]), e._dayOfYear > xt(s) && (e._pf._overflowDayOfYear = !0), n = Gt(s, 0, e._dayOfYear), e._a[a] = n.getUTCMonth(), e._a[f] = n.getUTCDate());
        for (t = 0; t < 3 && e._a[t] == null; ++t) e._a[t] = r[t] = i[t];
        for (; t < 7; t++) e._a[t] = r[t] = e._a[t] == null ? t === 2 ? 1 : 0 : e._a[t];
        e._d = (e._useUTC ? Gt: Qt).apply(null, r),
        e._tzm != null && e._d.setUTCMinutes(e._d.getUTCMinutes() + e._tzm)
    }
    function Rt(e) {
        var t;
        if (e._d) return;
        t = yt(e._i),
        e._a = [t.year, t.month, t.day, t.hour, t.minute, t.second, t.millisecond],
        qt(e)
    }
    function Ut(e) {
        var t = new Date;
        return e._useUTC ? [t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate()] : [t.getFullYear(), t.getMonth(), t.getDate()]
    }
    function zt(e) {
        if (e._f === t.ISO_8601) {
            $t(e);
            return
        }
        e._a = [],
        e._pf.empty = !0;
        var n = Mt(e._l),
        r = "" + e._i,
        i,
        s,
        o,
        u,
        a,
        f = r.length,
        c = 0;
        o = Ht(e._f, n).match(w) || [];
        for (i = 0; i < o.length; i++) u = o[i],
        s = (r.match(Bt(u, e)) || [])[0],
        s && (a = r.substr(0, r.indexOf(s)), a.length > 0 && e._pf.unusedInput.push(a), r = r.slice(r.indexOf(s) + s.length), c += s.length),
        G[u] ? (s ? e._pf.empty = !1 : e._pf.unusedTokens.push(u), Ft(u, s, e)) : e._strict && !s && e._pf.unusedTokens.push(u);
        e._pf.charsLeftOver = f - c,
        r.length > 0 && e._pf.unusedInput.push(r),
        e._isPm && e._a[l] < 12 && (e._a[l] += 12),
        e._isPm === !1 && e._a[l] === 12 && (e._a[l] = 0),
        qt(e),
        Nt(e)
    }
    function Wt(e) {
        return e.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
        function(e, t, n, r, i) {
            return t || n || r || i
        })
    }
    function Xt(e) {
        return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
    }
    function Vt(e) {
        var t, n, r, i, s;
        if (e._f.length === 0) {
            e._pf.invalidFormat = !0,
            e._d = new Date(NaN);
            return
        }
        for (i = 0; i < e._f.length; i++) {
            s = 0,
            t = ut({},
            e),
            t._pf = et(),
            t._f = e._f[i],
            zt(t);
            if (!Ct(t)) continue;
            s += t._pf.charsLeftOver,
            s += t._pf.unusedTokens.length * 10,
            t._pf.score = s;
            if (r == null || s < r) r = s,
            n = t
        }
        ut(e, n || t)
    }
    function $t(e) {
        var t, n, r = e._i,
        i = F.exec(r);
        if (i) {
            e._pf.iso = !0;
            for (t = 0, n = q.length; t < n; t++) if (q[t][1].exec(r)) {
                e._f = q[t][0] + (i[6] || " ");
                break
            }
            for (t = 0, n = R.length; t < n; t++) if (R[t][1].exec(r)) {
                e._f += R[t][0];
                break
            }
            r.match(L) && (e._f += "Z"),
            zt(e)
        } else e._isValid = !1
    }
    function Jt(e) {
        $t(e),
        e._isValid === !1 && (delete e._isValid, t.createFromInputFallback(e))
    }
    function Kt(n) {
        var r = n._i,
        i;
        r === e ? n._d = new Date: vt(r) ? n._d = new Date( + r) : (i = g.exec(r)) !== null ? n._d = new Date( + i[1]) : typeof r == "string" ? Jt(n) : dt(r) ? (n._a = r.slice(0), qt(n)) : typeof r == "object" ? Rt(n) : typeof r == "number" ? n._d = new Date(r) : t.createFromInputFallback(n)
    }
    function Qt(e, t, n, r, i, s, o) {
        var u = new Date(e, t, n, r, i, s, o);
        return e < 1970 && u.setFullYear(e),
        u
    }
    function Gt(e) {
        var t = new Date(Date.UTC.apply(null, arguments));
        return e < 1970 && t.setUTCFullYear(e),
        t
    }
    function Yt(e, t) {
        if (typeof e == "string") if (!isNaN(e)) e = parseInt(e, 10);
        else {
            e = t.weekdaysParse(e);
            if (typeof e != "number") return null
        }
        return e
    }
    function Zt(e, t, n, r, i) {
        return i.relativeTime(t || 1, !!n, e, r)
    }
    function en(e, n, r) {
        var i = t.duration(e).abs(),
        o = s(i.as("s")),
        u = s(i.as("m")),
        a = s(i.as("h")),
        f = s(i.as("d")),
        l = s(i.as("M")),
        c = s(i.as("y")),
        h = o < J.s && ["s", o] || u === 1 && ["m"] || u < J.m && ["mm", u] || a === 1 && ["h"] || a < J.h && ["hh", a] || f === 1 && ["d"] || f < J.d && ["dd", f] || l === 1 && ["M"] || l < J.M && ["MM", l] || c === 1 && ["y"] || ["yy", c];
        return h[2] = n,
        h[3] = +e > 0,
        h[4] = r,
        Zt.apply({},
        h)
    }
    function tn(e, n, r) {
        var i = r - n,
        s = r - e.day(),
        o;
        return s > i && (s -= 7),
        s < i - 7 && (s += 7),
        o = t(e).add("d", s),
        {
            week: Math.ceil(o.dayOfYear() / 7),
            year: o.year()
        }
    }
    function nn(e, t, n, r, i) {
        var s = Gt(e, 0, 1).getUTCDay(),
        o,
        u;
        return s = s === 0 ? 7 : s,
        n = n != null ? n: i,
        o = i - s + (s > r ? 7 : 0) - (s < i ? 7 : 0),
        u = 7 * (t - 1) + (n - i) + o + 1,
        {
            year: u > 0 ? e: e - 1,
            dayOfYear: u > 0 ? u: xt(e - 1) + u
        }
    }
    function rn(n) {
        var r = n._i,
        i = n._f;
        return r === null || i === e && r === "" ? t.invalid({
            nullInput: !0
        }) : (typeof r == "string" && (n._i = r = Mt().preparse(r)), t.isMoment(r) ? (n = at(r), n._d = new Date( + r._d)) : i ? dt(i) ? Vt(n) : zt(n) : Kt(n), new st(n))
    }
    function sn(e, n) {
        var r, i;
        n.length === 1 && dt(n[0]) && (n = n[0]);
        if (!n.length) return t();
        r = n[0];
        for (i = 1; i < n.length; ++i) n[i][e](r) && (r = n[i]);
        return r
    }
    function on(e, t) {
        var n;
        if (typeof t == "string") {
            t = e.lang().monthsParse(t);
            if (typeof t != "number") return e
        }
        return n = Math.min(e.date(), Et(e.year(), t)),
        e._d["set" + (e._isUTC ? "UTC": "") + "Month"](t, n),
        e
    }
    function un(e, t) {
        return e._d["get" + (e._isUTC ? "UTC": "") + t]()
    }
    function an(e, t, n) {
        return t === "Month" ? on(e, n) : e._d["set" + (e._isUTC ? "UTC": "") + t](n)
    }
    function fn(e, n) {
        return function(r) {
            return r != null ? (an(this, e, r), t.updateOffset(this, n), this) : un(this, e)
        }
    }
    function ln(e) {
        return e * 400 / 146097
    }
    function cn(e) {
        return e * 146097 / 400
    }
    function hn(e) {
        t.duration.fn[e] = function() {
            return this._data[e]
        }
    }
    function pn(e) {
        if (typeof ender != "undefined") return;
        i = r.moment,
        e ? r.moment = tt("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.", t) : r.moment = t
    }
    var t, n = "2.7.0",
    r = typeof global != "undefined" ? global: this,
    i,
    s = Math.round,
    o,
    u = 0,
    a = 1,
    f = 2,
    l = 3,
    c = 4,
    h = 5,
    p = 6,
    d = {},
    v = {
        _isAMomentObject: null,
        _i: null,
        _f: null,
        _l: null,
        _strict: null,
        _tzm: null,
        _isUTC: null,
        _offset: null,
        _pf: null,
        _lang: null
    },
    m = typeof module != "undefined" && module.exports,
    g = /^\/?Date\((\-?\d+)/i,
    y = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
    b = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
    w = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
    E = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
    S = /\d\d?/,
    x = /\d{1,3}/,
    T = /\d{1,4}/,
    N = /[+\-]?\d{1,6}/,
    C = /\d+/,
    k = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
    L = /Z|[\+\-]\d\d:?\d\d/gi,
    A = /T/i,
    O = /[\+\-]?\d+(\.\d{1,3})?/,
    M = /\d{1,2}/,
    _ = /\d/,
    D = /\d\d/,
    P = /\d{3}/,
    H = /\d{4}/,
    B = /[+-]?\d{6}/,
    j = /[+-]?\d+/,
    F = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
    I = "YYYY-MM-DDTHH:mm:ssZ",
    q = [["YYYYYY-MM-DD", /[+-]\d{6}-\d{2}-\d{2}/], ["YYYY-MM-DD", /\d{4}-\d{2}-\d{2}/], ["GGGG-[W]WW-E", /\d{4}-W\d{2}-\d/], ["GGGG-[W]WW", /\d{4}-W\d{2}/], ["YYYY-DDD", /\d{4}-\d{3}/]],
    R = [["HH:mm:ss.SSSS", /(T| )\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss", /(T| )\d\d:\d\d:\d\d/], ["HH:mm", /(T| )\d\d:\d\d/], ["HH", /(T| )\d\d/]],
    U = /([\+\-]|\d\d)/gi,
    z = "Date|Hours|Minutes|Seconds|Milliseconds".split("|"),
    W = {
        Milliseconds: 1,
        Seconds: 1e3,
        Minutes: 6e4,
        Hours: 36e5,
        Days: 864e5,
        Months: 2592e6,
        Years: 31536e6
    },
    X = {
        ms: "millisecond",
        s: "second",
        m: "minute",
        h: "hour",
        d: "day",
        D: "date",
        w: "week",
        W: "isoWeek",
        M: "month",
        Q: "quarter",
        y: "year",
        DDD: "dayOfYear",
        e: "weekday",
        E: "isoWeekday",
        gg: "weekYear",
        GG: "isoWeekYear"
    },
    V = {
        dayofyear: "dayOfYear",
        isoweekday: "isoWeekday",
        isoweek: "isoWeek",
        weekyear: "weekYear",
        isoweekyear: "isoWeekYear"
    },
    $ = {},
    J = {
        s: 45,
        m: 45,
        h: 22,
        d: 26,
        M: 11
    },
    K = "DDD w W M D d".split(" "),
    Q = "M D H h m s w W".split(" "),
    G = {
        M: function() {
            return this.month() + 1
        },
        MMM: function(e) {
            return this.lang().monthsShort(this, e)
        },
        MMMM: function(e) {
            return this.lang().months(this, e)
        },
        D: function() {
            return this.date()
        },
        DDD: function() {
            return this.dayOfYear()
        },
        d: function() {
            return this.day()
        },
        dd: function(e) {
            return this.lang().weekdaysMin(this, e)
        },
        ddd: function(e) {
            return this.lang().weekdaysShort(this, e)
        },
        dddd: function(e) {
            return this.lang().weekdays(this, e)
        },
        w: function() {
            return this.week()
        },
        W: function() {
            return this.isoWeek()
        },
        YY: function() {
            return lt(this.year() % 100, 2)
        },
        YYYY: function() {
            return lt(this.year(), 4)
        },
        YYYYY: function() {
            return lt(this.year(), 5)
        },
        YYYYYY: function() {
            var e = this.year(),
            t = e >= 0 ? "+": "-";
            return t + lt(Math.abs(e), 6)
        },
        gg: function() {
            return lt(this.weekYear() % 100, 2)
        },
        gggg: function() {
            return lt(this.weekYear(), 4)
        },
        ggggg: function() {
            return lt(this.weekYear(), 5)
        },
        GG: function() {
            return lt(this.isoWeekYear() % 100, 2)
        },
        GGGG: function() {
            return lt(this.isoWeekYear(), 4)
        },
        GGGGG: function() {
            return lt(this.isoWeekYear(), 5)
        },
        e: function() {
            return this.weekday()
        },
        E: function() {
            return this.isoWeekday()
        },
        a: function() {
            return this.lang().meridiem(this.hours(), this.minutes(), !0)
        },
        A: function() {
            return this.lang().meridiem(this.hours(), this.minutes(), !1)
        },
        H: function() {
            return this.hours()
        },
        h: function() {
            return this.hours() % 12 || 12
        },
        m: function() {
            return this.minutes()
        },
        s: function() {
            return this.seconds()
        },
        S: function() {
            return wt(this.milliseconds() / 100)
        },
        SS: function() {
            return lt(wt(this.milliseconds() / 10), 2)
        },
        SSS: function() {
            return lt(this.milliseconds(), 3)
        },
        SSSS: function() {
            return lt(this.milliseconds(), 3)
        },
        Z: function() {
            var e = -this.zone(),
            t = "+";
            return e < 0 && (e = -e, t = "-"),
            t + lt(wt(e / 60), 2) + ":" + lt(wt(e) % 60, 2)
        },
        ZZ: function() {
            var e = -this.zone(),
            t = "+";
            return e < 0 && (e = -e, t = "-"),
            t + lt(wt(e / 60), 2) + lt(wt(e) % 60, 2)
        },
        z: function() {
            return this.zoneAbbr()
        },
        zz: function() {
            return this.zoneName()
        },
        X: function() {
            return this.unix()
        },
        Q: function() {
            return this.quarter()
        }
    },
    Y = ["months", "monthsShort", "weekdays", "weekdaysShort", "weekdaysMin"];
    while (K.length) o = K.pop(),
    G[o + "o"] = rt(G[o], o);
    while (Q.length) o = Q.pop(),
    G[o + o] = nt(G[o], 2);
    G.DDDD = nt(G.DDD, 3),
    ut(it.prototype, {
        set: function(e) {
            var t, n;
            for (n in e) t = e[n],
            typeof t == "function" ? this[n] = t: this["_" + n] = t
        },
        _months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
        months: function(e) {
            return this._months[e.month()]
        },
        _monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
        monthsShort: function(e) {
            return this._monthsShort[e.month()]
        },
        monthsParse: function(e) {
            var n, r, i;
            this._monthsParse || (this._monthsParse = []);
            for (n = 0; n < 12; n++) {
                this._monthsParse[n] || (r = t.utc([2e3, n]), i = "^" + this.months(r, "") + "|^" + this.monthsShort(r, ""), this._monthsParse[n] = new RegExp(i.replace(".", ""), "i"));
                if (this._monthsParse[n].test(e)) return n
            }
        },
        _weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
        weekdays: function(e) {
            return this._weekdays[e.day()]
        },
        _weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
        weekdaysShort: function(e) {
            return this._weekdaysShort[e.day()]
        },
        _weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
        weekdaysMin: function(e) {
            return this._weekdaysMin[e.day()]
        },
        weekdaysParse: function(e) {
            var n, r, i;
            this._weekdaysParse || (this._weekdaysParse = []);
            for (n = 0; n < 7; n++) {
                this._weekdaysParse[n] || (r = t([2e3, 1]).day(n), i = "^" + this.weekdays(r, "") + "|^" + this.weekdaysShort(r, "") + "|^" + this.weekdaysMin(r, ""), this._weekdaysParse[n] = new RegExp(i.replace(".", ""), "i"));
                if (this._weekdaysParse[n].test(e)) return n
            }
        },
        _longDateFormat: {
            LT: "h:mm A",
            L: "MM/DD/YYYY",
            LL: "MMMM D YYYY",
            LLL: "MMMM D YYYY LT",
            LLLL: "dddd, MMMM D YYYY LT"
        },
        longDateFormat: function(e) {
            var t = this._longDateFormat[e];
            return ! t && this._longDateFormat[e.toUpperCase()] && (t = this._longDateFormat[e.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,
            function(e) {
                return e.slice(1)
            }), this._longDateFormat[e] = t),
            t
        },
        isPM: function(e) {
            return (e + "").toLowerCase().charAt(0) === "p"
        },
        _meridiemParse: /[ap]\.?m?\.?/i,
        meridiem: function(e, t, n) {
            return e > 11 ? n ? "pm": "PM": n ? "am": "AM"
        },
        _calendar: {
            sameDay: "[Today at] LT",
            nextDay: "[Tomorrow at] LT",
            nextWeek: "dddd [at] LT",
            lastDay: "[Yesterday at] LT",
            lastWeek: "[Last] dddd [at] LT",
            sameElse: "L"
        },
        calendar: function(e, t) {
            var n = this._calendar[e];
            return typeof n == "function" ? n.apply(t) : n
        },
        _relativeTime: {
            future: "in %s",
            past: "%s ago",
            s: "a few seconds",
            m: "a minute",
            mm: "%d minutes",
            h: "an hour",
            hh: "%d hours",
            d: "a day",
            dd: "%d days",
            M: "a month",
            MM: "%d months",
            y: "a year",
            yy: "%d years"
        },
        relativeTime: function(e, t, n, r) {
            var i = this._relativeTime[n];
            return typeof i == "function" ? i(e, t, n, r) : i.replace(/%d/i, e)
        },
        pastFuture: function(e, t) {
            var n = this._relativeTime[e > 0 ? "future": "past"];
            return typeof n == "function" ? n(t) : n.replace(/%s/i, t)
        },
        ordinal: function(e) {
            return this._ordinal.replace("%d", e)
        },
        _ordinal: "%d",
        preparse: function(e) {
            return e
        },
        postformat: function(e) {
            return e
        },
        week: function(e) {
            return tn(e, this._week.dow, this._week.doy).week
        },
        _week: {
            dow: 0,
            doy: 6
        },
        _invalidDate: "Invalid date",
        invalidDate: function() {
            return this._invalidDate
        }
    }),
    t = function(t, n, r, i) {
        var s;
        return typeof r == "boolean" && (i = r, r = e),
        s = {},
        s._isAMomentObject = !0,
        s._i = t,
        s._f = n,
        s._l = r,
        s._strict = i,
        s._isUTC = !1,
        s._pf = et(),
        rn(s)
    },
    t.suppressDeprecationWarnings = !1,
    t.createFromInputFallback = tt("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",
    function(e) {
        e._d = new Date(e._i)
    }),
    t.min = function() {
        var e = [].slice.call(arguments, 0);
        return sn("isBefore", e)
    },
    t.max = function() {
        var e = [].slice.call(arguments, 0);
        return sn("isAfter", e)
    },
    t.utc = function(t, n, r, i) {
        var s;
        return typeof r == "boolean" && (i = r, r = e),
        s = {},
        s._isAMomentObject = !0,
        s._useUTC = !0,
        s._isUTC = !0,
        s._l = r,
        s._i = t,
        s._f = n,
        s._strict = i,
        s._pf = et(),
        rn(s).utc()
    },
    t.unix = function(e) {
        return t(e * 1e3)
    },
    t.duration = function(e, n) {
        var r = e,
        i = null,
        s, o, u, a;
        return t.isDuration(e) ? r = {
            ms: e._milliseconds,
            d: e._days,
            M: e._months
        }: typeof e == "number" ? (r = {},
        n ? r[n] = e: r.milliseconds = e) : (i = y.exec(e)) ? (s = i[1] === "-" ? -1 : 1, r = {
            y: 0,
            d: wt(i[f]) * s,
            h: wt(i[l]) * s,
            m: wt(i[c]) * s,
            s: wt(i[h]) * s,
            ms: wt(i[p]) * s
        }) : (i = b.exec(e)) ? (s = i[1] === "-" ? -1 : 1, u = function(e) {
            var t = e && parseFloat(e.replace(",", "."));
            return (isNaN(t) ? 0 : t) * s
        },
        r = {
            y: u(i[2]),
            M: u(i[3]),
            d: u(i[4]),
            h: u(i[5]),
            m: u(i[6]),
            s: u(i[7]),
            w: u(i[8])
        }) : typeof r == "object" && ("from" in r || "to" in r) && (a = ht(t(r.from), t(r.to)), r = {},
        r.ms = a.milliseconds, r.M = a.months),
        o = new ot(r),
        t.isDuration(e) && e.hasOwnProperty("_lang") && (o._lang = e._lang),
        o
    },
    t.version = n,
    t.defaultFormat = I,
    t.ISO_8601 = function() {},
    t.momentProperties = v,
    t.updateOffset = function() {},
    t.relativeTimeThreshold = function(t, n) {
        return J[t] === e ? !1 : n === e ? J[t] : (J[t] = n, !0)
    },
    t.lang = function(e, n) {
        var r;
        return e ? (n ? At(kt(e), n) : n === null ? (Ot(e), e = "en") : d[e] || Mt(e), r = t.duration.fn._lang = t.fn._lang = Mt(e), r._abbr) : t.fn._lang._abbr
    },
    t.langData = function(e) {
        return e && e._lang && e._lang._abbr && (e = e._lang._abbr),
        Mt(e)
    },
    t.isMoment = function(e) {
        return e instanceof st || e != null && e.hasOwnProperty("_isAMomentObject")
    },
    t.isDuration = function(e) {
        return e instanceof ot
    };
    for (o = Y.length - 1; o >= 0; --o) bt(Y[o]);
    t.normalizeUnits = function(e) {
        return gt(e)
    },
    t.invalid = function(e) {
        var n = t.utc(NaN);
        return e != null ? ut(n._pf, e) : n._pf.userInvalidated = !0,
        n
    },
    t.parseZone = function() {
        return t.apply(null, arguments).parseZone()
    },
    t.parseTwoDigitYear = function(e) {
        return wt(e) + (wt(e) > 68 ? 1900 : 2e3)
    },
    ut(t.fn = st.prototype, {
        clone: function() {
            return t(this)
        },
        valueOf: function() {
            return + this._d + (this._offset || 0) * 6e4
        },
        unix: function() {
            return Math.floor( + this / 1e3)
        },
        toString: function() {
            return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
        },
        toDate: function() {
            return this._offset ? new Date( + this) : this._d
        },
        toISOString: function() {
            var e = t(this).utc();
            return 0 < e.year() && e.year() <= 9999 ? Pt(e, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : Pt(e, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
        },
        toArray: function() {
            var e = this;
            return [e.year(), e.month(), e.date(), e.hours(), e.minutes(), e.seconds(), e.milliseconds()]
        },
        isValid: function() {
            return Ct(this)
        },
        isDSTShifted: function() {
            return this._a ? this.isValid() && mt(this._a, (this._isUTC ? t.utc(this._a) : t(this._a)).toArray()) > 0 : !1
        },
        parsingFlags: function() {
            return ut({},
            this._pf)
        },
        invalidAt: function() {
            return this._pf.overflow
        },
        utc: function(e) {
            return this.zone(0, e)
        },
        local: function(e) {
            return this._isUTC && (this.zone(0, e), this._isUTC = !1, e && this.add(this._d.getTimezoneOffset(), "m")),
            this
        },
        format: function(e) {
            var n = Pt(this, e || t.defaultFormat);
            return this.lang().postformat(n)
        },
        add: function(e, n) {
            var r;
            return typeof e == "string" && typeof n == "string" ? r = t.duration(isNaN( + n) ? +e: +n, isNaN( + n) ? n: e) : typeof e == "string" ? r = t.duration( + n, e) : r = t.duration(e, n),
            pt(this, r, 1),
            this
        },
        subtract: function(e, n) {
            var r;
            return typeof e == "string" && typeof n == "string" ? r = t.duration(isNaN( + n) ? +e: +n, isNaN( + n) ? n: e) : typeof e == "string" ? r = t.duration( + n, e) : r = t.duration(e, n),
            pt(this, r, -1),
            this
        },
        diff: function(e, n, r) {
            var i = Lt(e, this),
            s = (this.zone() - i.zone()) * 6e4,
            o,
            u;
            return n = gt(n),
            n === "year" || n === "month" ? (o = (this.daysInMonth() + i.daysInMonth()) * 432e5, u = (this.year() - i.year()) * 12 + (this.month() - i.month()), u += (this - t(this).startOf("month") - (i - t(i).startOf("month"))) / o, u -= (this.zone() - t(this).startOf("month").zone() - (i.zone() - t(i).startOf("month").zone())) * 6e4 / o, n === "year" && (u /= 12)) : (o = this - i, u = n === "second" ? o / 1e3: n === "minute" ? o / 6e4: n === "hour" ? o / 36e5: n === "day" ? (o - s) / 864e5: n === "week" ? (o - s) / 6048e5: o),
            r ? u: ft(u)
        },
        from: function(e, n) {
            return t.duration({
                to: this,
                from: e
            }).lang(this.lang()._abbr).humanize(!n)
        },
        fromNow: function(e) {
            return this.from(t(), e)
        },
        calendar: function(e) {
            var n = e || t(),
            r = Lt(n, this).startOf("day"),
            i = this.diff(r, "days", !0),
            s = i < -6 ? "sameElse": i < -1 ? "lastWeek": i < 0 ? "lastDay": i < 1 ? "sameDay": i < 2 ? "nextDay": i < 7 ? "nextWeek": "sameElse";
            return this.format(this.lang().calendar(s, this))
        },
        isLeapYear: function() {
            return Tt(this.year())
        },
        isDST: function() {
            return this.zone() < this.clone().month(0).zone() || this.zone() < this.clone().month(5).zone()
        },
        day: function(e) {
            var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
            return e != null ? (e = Yt(e, this.lang()), this.add(e - t, "days")) : t
        },
        month: fn("Month", !0),
        startOf: function(e) {
            e = gt(e);
            switch (e) {
            case "year":
                this.month(0);
            case "quarter":
            case "month":
                this.date(1);
            case "week":
            case "isoWeek":
            case "day":
                this.hours(0);
            case "hour":
                this.minutes(0);
            case "minute":
                this.seconds(0);
            case "second":
                this.milliseconds(0)
            }
            return e === "week" ? this.weekday(0) : e === "isoWeek" && this.isoWeekday(1),
            e === "quarter" && this.month(Math.floor(this.month() / 3) * 3),
            this
        },
        endOf: function(e) {
            return e = gt(e),
            this.startOf(e).add(e === "isoWeek" ? "week": e, 1).subtract("ms", 1)
        },
        isAfter: function(e, n) {
            return n = typeof n != "undefined" ? n: "millisecond",
            +this.clone().startOf(n) > +t(e).startOf(n)
        },
        isBefore: function(e, n) {
            return n = typeof n != "undefined" ? n: "millisecond",
            +this.clone().startOf(n) < +t(e).startOf(n)
        },
        isSame: function(e, t) {
            return t = t || "ms",
            +this.clone().startOf(t) === +Lt(e, this).startOf(t)
        },
        min: tt("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",
        function(e) {
            return e = t.apply(null, arguments),
            e < this ? this: e
        }),
        max: tt("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",
        function(e) {
            return e = t.apply(null, arguments),
            e > this ? this: e
        }),
        zone: function(e, n) {
            var r = this._offset || 0,
            i;
            return e == null ? this._isUTC ? r: this._d.getTimezoneOffset() : (typeof e == "string" && (e = jt(e)), Math.abs(e) < 16 && (e *= 60), !this._isUTC && n && (i = this._d.getTimezoneOffset()), this._offset = e, this._isUTC = !0, i != null && this.subtract(i, "m"), r !== e && (!n || this._changeInProgress ? pt(this, t.duration(r - e, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, t.updateOffset(this, !0), this._changeInProgress = null)), this)
        },
        zoneAbbr: function() {
            return this._isUTC ? "UTC": ""
        },
        zoneName: function() {
            return this._isUTC ? "Coordinated Universal Time": ""
        },
        parseZone: function() {
            return this._tzm ? this.zone(this._tzm) : typeof this._i == "string" && this.zone(this._i),
            this
        },
        hasAlignedHourOffset: function(e) {
            return e ? e = t(e).zone() : e = 0,
            (this.zone() - e) % 60 === 0
        },
        daysInMonth: function() {
            return Et(this.year(), this.month())
        },
        dayOfYear: function(e) {
            var n = s((t(this).startOf("day") - t(this).startOf("year")) / 864e5) + 1;
            return e == null ? n: this.add("d", e - n)
        },
        quarter: function(e) {
            return e == null ? Math.ceil((this.month() + 1) / 3) : this.month((e - 1) * 3 + this.month() % 3)
        },
        weekYear: function(e) {
            var t = tn(this, this.lang()._week.dow, this.lang()._week.doy).year;
            return e == null ? t: this.add("y", e - t)
        },
        isoWeekYear: function(e) {
            var t = tn(this, 1, 4).year;
            return e == null ? t: this.add("y", e - t)
        },
        week: function(e) {
            var t = this.lang().week(this);
            return e == null ? t: this.add("d", (e - t) * 7)
        },
        isoWeek: function(e) {
            var t = tn(this, 1, 4).week;
            return e == null ? t: this.add("d", (e - t) * 7)
        },
        weekday: function(e) {
            var t = (this.day() + 7 - this.lang()._week.dow) % 7;
            return e == null ? t: this.add("d", e - t)
        },
        isoWeekday: function(e) {
            return e == null ? this.day() || 7 : this.day(this.day() % 7 ? e: e - 7)
        },
        isoWeeksInYear: function() {
            return St(this.year(), 1, 4)
        },
        weeksInYear: function() {
            var e = this._lang._week;
            return St(this.year(), e.dow, e.doy)
        },
        get: function(e) {
            return e = gt(e),
            this[e]()
        },
        set: function(e, t) {
            return e = gt(e),
            typeof this[e] == "function" && this[e](t),
            this
        },
        lang: function(t) {
            return t === e ? this._lang: (this._lang = Mt(t), this)
        }
    }),
    t.fn.millisecond = t.fn.milliseconds = fn("Milliseconds", !1),
    t.fn.second = t.fn.seconds = fn("Seconds", !1),
    t.fn.minute = t.fn.minutes = fn("Minutes", !1),
    t.fn.hour = t.fn.hours = fn("Hours", !0),
    t.fn.date = fn("Date", !0),
    t.fn.dates = tt("dates accessor is deprecated. Use date instead.", fn("Date", !0)),
    t.fn.year = fn("FullYear", !0),
    t.fn.years = tt("years accessor is deprecated. Use year instead.", fn("FullYear", !0)),
    t.fn.days = t.fn.day,
    t.fn.months = t.fn.month,
    t.fn.weeks = t.fn.week,
    t.fn.isoWeeks = t.fn.isoWeek,
    t.fn.quarters = t.fn.quarter,
    t.fn.toJSON = t.fn.toISOString,
    ut(t.duration.fn = ot.prototype, {
        _bubble: function() {
            var e = this._milliseconds,
            t = this._days,
            n = this._months,
            r = this._data,
            i, s, o, u = 0;
            r.milliseconds = e % 1e3,
            i = ft(e / 1e3),
            r.seconds = i % 60,
            s = ft(i / 60),
            r.minutes = s % 60,
            o = ft(s / 60),
            r.hours = o % 24,
            t += ft(o / 24),
            u = ft(ln(t)),
            t -= ft(cn(u)),
            n += ft(t / 30),
            t %= 30,
            u += ft(n / 12),
            n %= 12,
            r.days = t,
            r.months = n,
            r.years = u
        },
        abs: function() {
            return this._milliseconds = Math.abs(this._milliseconds),
            this._days = Math.abs(this._days),
            this._months = Math.abs(this._months),
            this._data.milliseconds = Math.abs(this._data.milliseconds),
            this._data.seconds = Math.abs(this._data.seconds),
            this._data.minutes = Math.abs(this._data.minutes),
            this._data.hours = Math.abs(this._data.hours),
            this._data.months = Math.abs(this._data.months),
            this._data.years = Math.abs(this._data.years),
            this
        },
        weeks: function() {
            return ft(this.days() / 7)
        },
        valueOf: function() {
            return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + wt(this._months / 12) * 31536e6
        },
        humanize: function(e) {
            var t = en(this, !e, this.lang());
            return e && (t = this.lang().pastFuture( + this, t)),
            this.lang().postformat(t)
        },
        add: function(e, n) {
            var r = t.duration(e, n);
            return this._milliseconds += r._milliseconds,
            this._days += r._days,
            this._months += r._months,
            this._bubble(),
            this
        },
        subtract: function(e, n) {
            var r = t.duration(e, n);
            return this._milliseconds -= r._milliseconds,
            this._days -= r._days,
            this._months -= r._months,
            this._bubble(),
            this
        },
        get: function(e) {
            return e = gt(e),
            this[e.toLowerCase() + "s"]()
        },
        as: function(e) {
            var t, n;
            e = gt(e),
            t = this._days + this._milliseconds / 864e5;
            if (e === "month" || e === "year") return n = this._months + ln(t) * 12,
            e === "month" ? n: n / 12;
            t += cn(this._months / 12);
            switch (e) {
            case "week":
                return t / 7;
            case "day":
                return t;
            case "hour":
                return t * 24;
            case "minute":
                return t * 24 * 60;
            case "second":
                return t * 24 * 60 * 60;
            case "millisecond":
                return t * 24 * 60 * 60 * 1e3;
            default:
                throw new Error("Unknown unit " + e)
            }
        },
        lang: t.fn.lang,
        toIsoString: tt("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",
        function() {
            return this.toISOString()
        }),
        toISOString: function() {
            var e = Math.abs(this.years()),
            t = Math.abs(this.months()),
            n = Math.abs(this.days()),
            r = Math.abs(this.hours()),
            i = Math.abs(this.minutes()),
            s = Math.abs(this.seconds() + this.milliseconds() / 1e3);
            return this.asSeconds() ? (this.asSeconds() < 0 ? "-": "") + "P" + (e ? e + "Y": "") + (t ? t + "M": "") + (n ? n + "D": "") + (r || i || s ? "T": "") + (r ? r + "H": "") + (i ? i + "M": "") + (s ? s + "S": "") : "P0D"
        }
    });
    for (o in W) W.hasOwnProperty(o) && hn(o.toLowerCase());
    t.duration.fn.asMilliseconds = function() {
        return this.as("ms")
    },
    t.duration.fn.asSeconds = function() {
        return this.as("s")
    },
    t.duration.fn.asMinutes = function() {
        return this.as("m")
    },
    t.duration.fn.asHours = function() {
        return this.as("h")
    },
    t.duration.fn.asDays = function() {
        return this.as("d")
    },
    t.duration.fn.asWeeks = function() {
        return this.as("weeks")
    },
    t.duration.fn.asMonths = function() {
        return this.as("M")
    },
    t.duration.fn.asYears = function() {
        return this.as("y")
    },
    t.lang("en", {
        ordinal: function(e) {
            var t = e % 10,
            n = wt(e % 100 / 10) === 1 ? "th": t === 1 ? "st": t === 2 ? "nd": t === 3 ? "rd": "th";
            return e + n
        }
    }),
    m ? module.exports = t: typeof define == "function" && define.amd ? (define("moment",
    function(e, n, s) {
        return s.config && s.config() && s.config().noGlobal === !0 && (r.moment = i),
        t
    }), pn(!0)) : pn()
}.call(this),
function(e, t, n) { (function(e) {
        "use strict";
        typeof define == "function" && define.amd ? define(["jquery"], e) : jQuery && !jQuery.fn.qtip && e(jQuery)
    })(function(r) {
        "use strict";
        function I(e, t, n, i) {
            this.id = n,
            this.target = e,
            this.tooltip = o,
            this.elements = {
                target: e
            },
            this._id = T + "-" + n,
            this.timers = {
                img: {}
            },
            this.options = t,
            this.plugins = {},
            this.cache = {
                event: {},
                target: r(),
                disabled: s,
                attr: i,
                onTooltip: s,
                lastClass: ""
            },
            this.rendered = this.destroyed = this.disabled = this.waiting = this.hiddenDuringWait = this.positioning = this.triggering = s
        }
        function q(e) {
            return e === o || r.type(e) !== "object"
        }
        function R(e) {
            return ! (r.isFunction(e) || e && e.attr || e.length || r.type(e) === "object" && (e.jquery || e.then))
        }
        function U(e) {
            var t, n, u, a;
            return q(e) ? s: (q(e.metadata) && (e.metadata = {
                type: e.metadata
            }), "content" in e && (t = e.content, q(t) || t.jquery || t.done ? t = e.content = {
                text: n = R(t) ? s: t
            }: n = t.text, "ajax" in t && (u = t.ajax, a = u && u.once !== s, delete t.ajax, t.text = function(e, t) {
                var i = n || r(this).attr(t.options.content.attr) || "Loading...",
                s = r.ajax(r.extend({},
                u, {
                    context: t
                })).then(u.success, o, u.error).then(function(e) {
                    return e && a && t.set("content.text", e),
                    e
                },
                function(e, n, r) {
                    if (t.destroyed || e.status === 0) return;
                    t.set("content.text", n + ": " + r)
                });
                return a ? i: (t.set("content.text", i), s)
            }), "title" in t && (r.isPlainObject(t.title) && (t.button = t.title.button, t.title = t.title.text), R(t.title || s) && (t.title = s))), "position" in e && q(e.position) && (e.position = {
                my: e.position,
                at: e.position
            }), "show" in e && q(e.show) && (e.show = e.show.jquery ? {
                target: e.show
            }: e.show === i ? {
                ready: i
            }: {
                event: e.show
            }), "hide" in e && q(e.hide) && (e.hide = e.hide.jquery ? {
                target: e.hide
            }: {
                event: e.hide
            }), "style" in e && q(e.style) && (e.style = {
                classes: e.style
            }), r.each(x,
            function() {
                this.sanitize && this.sanitize(e)
            }), e)
        }
        function z(e, t) {
            var n = 0,
            r, i = e,
            s = t.split(".");
            while (i = i[s[n++]]) n < s.length && (r = i);
            return [r || e, s.pop()]
        }
        function W(e, t) {
            var n, r, i;
            for (n in this.checks) for (r in this.checks[n]) if (i = (new RegExp(r, "i")).exec(e)) t.push(i),
            (n === "builtin" || this.plugins[n]) && this.checks[n][r].apply(this.plugins[n] || this, t)
        }
        function J(e) {
            return k.concat("").join(e ? "-" + e + " ": " ")
        }
        function K(e, t) {
            if (t > 0) return setTimeout(r.proxy(e, this), t);
            e.call(this)
        }
        function Q(e) {
            if (this.tooltip.hasClass(P)) return;
            clearTimeout(this.timers.show),
            clearTimeout(this.timers.hide),
            this.timers.show = K.call(this,
            function() {
                this.toggle(i, e)
            },
            this.options.show.delay)
        }
        function G(e) {
            if (this.tooltip.hasClass(P) || this.destroyed) return;
            var t = r(e.relatedTarget),
            n = t.closest(L)[0] === this.tooltip[0],
            i = t[0] === this.options.show.target[0];
            clearTimeout(this.timers.show),
            clearTimeout(this.timers.hide);
            if (this !== t[0] && this.options.position.target === "mouse" && n || this.options.hide.fixed && /mouse(out|leave|move)/.test(e.type) && (n || i)) {
                try {
                    e.preventDefault(),
                    e.stopImmediatePropagation()
                } catch(o) {}
                return
            }
            this.timers.hide = K.call(this,
            function() {
                this.toggle(s, e)
            },
            this.options.hide.delay, this)
        }
        function Y(e) {
            if (this.tooltip.hasClass(P) || !this.options.hide.inactive) return;
            clearTimeout(this.timers.inactive),
            this.timers.inactive = K.call(this,
            function() {
                this.hide(e)
            },
            this.options.hide.inactive)
        }
        function Z(e) {
            this.rendered && this.tooltip[0].offsetWidth > 0 && this.reposition(e)
        }
        function et(e, n, i) {
            r(t.body).delegate(e, (n.split ? n: n.join("." + T + " ")) + "." + T,
            function() {
                var e = b.api[r.attr(this, C)];
                e && !e.disabled && i.apply(e, arguments)
            })
        }
        function tt(e, n, u) {
            var a, f, l, c, h, p = r(t.body),
            d = e[0] === t ? p: e,
            v = e.metadata ? e.metadata(u.metadata) : o,
            m = u.metadata.type === "html5" && v ? v[u.metadata.name] : o,
            g = e.data(u.metadata.name || "qtipopts");
            try {
                g = typeof g == "string" ? r.parseJSON(g) : g
            } catch(y) {}
            c = r.extend(i, {},
            b.defaults, u, typeof g == "object" ? U(g) : o, U(m || v)),
            f = c.position,
            c.id = n;
            if ("boolean" == typeof c.content.text) {
                l = e.attr(c.content.attr);
                if (c.content.attr === s || !l) return s;
                c.content.text = l
            }
            f.container.length || (f.container = p),
            f.target === s && (f.target = d),
            c.show.target === s && (c.show.target = d),
            c.show.solo === i && (c.show.solo = f.container.closest("body")),
            c.hide.target === s && (c.hide.target = d),
            c.position.viewport === i && (c.position.viewport = f.container),
            f.container = f.container.eq(0),
            f.at = new E(f.at, i),
            f.my = new E(f.my);
            if (e.data(T)) if (c.overwrite) e.qtip("destroy", !0);
            else if (c.overwrite === s) return s;
            return e.attr(N, n),
            c.suppress && (h = e.attr("title")) && e.removeAttr("title").attr(B, h).attr("title", ""),
            a = new I(e, c, n, !!l),
            e.data(T, a),
            a
        }
        function ht(e) {
            return e.charAt(0).toUpperCase() + e.slice(1)
        }
        function vt(e, t) {
            var r = t.charAt(0).toUpperCase() + t.slice(1),
            i = (t + " " + dt.join(r + " ") + r).split(" "),
            s,
            o,
            u = 0;
            if (pt[t]) return e.css(pt[t]);
            while (s = i[u++]) if ((o = e.css(s)) !== n) return pt[t] = s,
            o
        }
        function mt(e, t) {
            return Math.ceil(parseFloat(vt(e, t)))
        }
        function Et(e, t) {
            this._ns = "tip",
            this.options = t,
            this.offset = t.offset,
            this.size = [t.width, t.height],
            this.init(this.qtip = e)
        }
        var i = !0,
        s = !1,
        o = null,
        u = "x",
        a = "y",
        f = "width",
        l = "height",
        c = "top",
        h = "left",
        p = "bottom",
        d = "right",
        v = "center",
        m = "flip",
        g = "flipinvert",
        y = "shift",
        b, w, E, S, x = {},
        T = "qtip",
        N = "data-hasqtip",
        C = "data-qtip-id",
        k = ["ui-widget", "ui-tooltip"],
        L = "." + T,
        A = "click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),
        O = T + "-fixed",
        M = T + "-default",
        _ = T + "-focus",
        D = T + "-hover",
        P = T + "-disabled",
        H = "_replacedByqTip",
        B = "oldtitle",
        j,
        F = {
            ie: function() {
                for (var e = 4,
                n = t.createElement("div"); (n.innerHTML = "<!--[if gt IE " + e + "]><i></i><![endif]-->") && n.getElementsByTagName("i")[0]; e += 1);
                return e > 4 ? e: NaN
            } (),
            iOS: parseFloat(("" + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0, ""])[1]).replace("undefined", "3_2").replace("_", ".").replace("_", "")) || s
        };
        w = I.prototype,
        w._when = function(e) {
            return r.when.apply(r, e)
        },
        w.render = function(e) {
            if (this.rendered || this.destroyed) return this;
            var t = this,
            n = this.options,
            o = this.cache,
            u = this.elements,
            a = n.content.text,
            f = n.content.title,
            l = n.content.button,
            c = n.position,
            h = "." + this._id + " ",
            p = [],
            d;
            return r.attr(this.target[0], "aria-describedby", this._id),
            o.posClass = this._createPosClass((this.position = {
                my: c.my,
                at: c.at
            }).my),
            this.tooltip = u.tooltip = d = r("<div/>", {
                id: this._id,
                "class": [T, M, n.style.classes, o.posClass].join(" "),
                width: n.style.width || "",
                height: n.style.height || "",
                tracking: c.target === "mouse" && c.adjust.mouse,
                role: "alert",
                "aria-live": "polite",
                "aria-atomic": s,
                "aria-describedby": this._id + "-content",
                "aria-hidden": i
            }).toggleClass(P, this.disabled).attr(C, this.id).data(T, this).appendTo(c.container).append(u.content = r("<div />", {
                "class": T + "-content",
                id: this._id + "-content",
                "aria-atomic": i
            })),
            this.rendered = -1,
            this.positioning = i,
            f && (this._createTitle(), r.isFunction(f) || p.push(this._updateTitle(f, s))),
            l && this._createButton(),
            r.isFunction(a) || p.push(this._updateContent(a, s)),
            this.rendered = i,
            this._setWidget(),
            r.each(x,
            function(e) {
                var n;
                this.initialize === "render" && (n = this(t)) && (t.plugins[e] = n)
            }),
            this._unassignEvents(),
            this._assignEvents(),
            this._when(p).then(function() {
                t._trigger("render"),
                t.positioning = s,
                !t.hiddenDuringWait && (n.show.ready || e) && t.toggle(i, o.event, s),
                t.hiddenDuringWait = s
            }),
            b.api[this.id] = this,
            this
        },
        w.destroy = function(e) {
            function t() {
                if (this.destroyed) return;
                this.destroyed = i;
                var e = this.target,
                t = e.attr(B),
                n;
                this.rendered && this.tooltip.stop(1, 0).find("*").remove().end().remove(),
                r.each(this.plugins,
                function(e) {
                    this.destroy && this.destroy()
                });
                for (n in this.timers) clearTimeout(this.timers[n]);
                e.removeData(T).removeAttr(C).removeAttr(N).removeAttr("aria-describedby"),
                this.options.suppress && t && e.attr("title", t).removeAttr(B),
                this._unassignEvents(),
                this.options = this.elements = this.cache = this.timers = this.plugins = this.mouse = o,
                delete b.api[this.id]
            }
            return this.destroyed ? this.target: (e === i && this.triggering !== "hide" || !this.rendered ? t.call(this) : (this.tooltip.one("tooltiphidden", r.proxy(t, this)), !this.triggering && this.hide()), this.target)
        },
        S = w.checks = {
            builtin: {
                "^id$": function(e, t, n, o) {
                    var u = n === i ? b.nextid: n,
                    a = T + "-" + u;
                    u !== s && u.length > 0 && !r("#" + a).length ? (this._id = a, this.rendered && (this.tooltip[0].id = this._id, this.elements.content[0].id = this._id + "-content", this.elements.title[0].id = this._id + "-title")) : e[t] = o
                },
                "^prerender": function(e, t, n) {
                    n && !this.rendered && this.render(this.options.show.ready)
                },
                "^content.text$": function(e, t, n) {
                    this._updateContent(n)
                },
                "^content.attr$": function(e, t, n, r) {
                    this.options.content.text === this.target.attr(r) && this._updateContent(this.target.attr(n))
                },
                "^content.title$": function(e, t, n) {
                    if (!n) return this._removeTitle();
                    n && !this.elements.title && this._createTitle(),
                    this._updateTitle(n)
                },
                "^content.button$": function(e, t, n) {
                    this._updateButton(n)
                },
                "^content.title.(text|button)$": function(e, t, n) {
                    this.set("content." + t, n)
                },
                "^position.(my|at)$": function(e, t, n) {
                    "string" == typeof n && (this.position[t] = e[t] = new E(n, t === "at"))
                },
                "^position.container$": function(e, t, n) {
                    this.rendered && this.tooltip.appendTo(n)
                },
                "^show.ready$": function(e, t, n) {
                    n && (!this.rendered && this.render(i) || this.toggle(i))
                },
                "^style.classes$": function(e, t, n, r) {
                    this.rendered && this.tooltip.removeClass(r).addClass(n)
                },
                "^style.(width|height)": function(e, t, n) {
                    this.rendered && this.tooltip.css(t, n)
                },
                "^style.widget|content.title": function() {
                    this.rendered && this._setWidget()
                },
                "^style.def": function(e, t, n) {
                    this.rendered && this.tooltip.toggleClass(M, !!n)
                },
                "^events.(render|show|move|hide|focus|blur)$": function(e, t, n) {
                    this.rendered && this.tooltip[(r.isFunction(n) ? "": "un") + "bind"]("tooltip" + t, n)
                },
                "^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)": function() {
                    if (!this.rendered) return;
                    var e = this.options.position;
                    this.tooltip.attr("tracking", e.target === "mouse" && e.adjust.mouse),
                    this._unassignEvents(),
                    this._assignEvents()
                }
            }
        },
        w.get = function(e) {
            if (this.destroyed) return this;
            var t = z(this.options, e.toLowerCase()),
            n = t[0][t[1]];
            return n.precedance ? n.string() : n
        };
        var X = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,
        V = /^prerender|show\.ready/i;
        w.set = function(e, t) {
            if (this.destroyed) return this;
            var n = this.rendered,
            u = s,
            a = this.options,
            f = this.checks,
            l;
            return "string" == typeof e ? (l = e, e = {},
            e[l] = t) : e = r.extend({},
            e),
            r.each(e,
            function(t, i) {
                if (n && V.test(t)) {
                    delete e[t];
                    return
                }
                var s = z(a, t.toLowerCase()),
                o;
                o = s[0][s[1]],
                s[0][s[1]] = i && i.nodeType ? r(i) : i,
                u = X.test(t) || u,
                e[t] = [s[0], s[1], i, o]
            }),
            U(a),
            this.positioning = i,
            r.each(e, r.proxy(W, this)),
            this.positioning = s,
            this.rendered && this.tooltip[0].offsetWidth > 0 && u && this.reposition(a.position.target === "mouse" ? o: this.cache.event),
            this
        },
        w._update = function(e, t, n) {
            var u = this,
            a = this.cache;
            return ! this.rendered || !e ? s: (r.isFunction(e) && (e = e.call(this.elements.target, a.event, this) || ""), r.isFunction(e.then) ? (a.waiting = i, e.then(function(e) {
                return a.waiting = s,
                u._update(e, t)
            },
            o,
            function(e) {
                return u._update(e, t)
            })) : e === s || !e && e !== "" ? s: (e.jquery && e.length > 0 ? t.empty().append(e.css({
                display: "block",
                visibility: "visible"
            })) : t.html(e), this._waitForContent(t).then(function(e) {
                u.rendered && u.tooltip[0].offsetWidth > 0 && u.reposition(a.event, !e.length)
            })))
        },
        w._waitForContent = function(e) {
            var t = this.cache;
            return t.waiting = i,
            (r.fn.imagesLoaded ? e.imagesLoaded() : r.Deferred().resolve([])).done(function() {
                t.waiting = s
            }).promise()
        },
        w._updateContent = function(e, t) {
            this._update(e, this.elements.content, t)
        },
        w._updateTitle = function(e, t) {
            this._update(e, this.elements.title, t) === s && this._removeTitle(s)
        },
        w._createTitle = function() {
            var e = this.elements,
            t = this._id + "-title";
            e.titlebar && this._removeTitle(),
            e.titlebar = r("<div />", {
                "class": T + "-titlebar " + (this.options.style.widget ? J("header") : "")
            }).append(e.title = r("<div />", {
                id: t,
                "class": T + "-title",
                "aria-atomic": i
            })).insertBefore(e.content).delegate(".qtip-close", "mousedown keydown mouseup keyup mouseout",
            function(e) {
                r(this).toggleClass("ui-state-active ui-state-focus", e.type.substr( - 4) === "down")
            }).delegate(".qtip-close", "mouseover mouseout",
            function(e) {
                r(this).toggleClass("ui-state-hover", e.type === "mouseover")
            }),
            this.options.content.button && this._createButton()
        },
        w._removeTitle = function(e) {
            var t = this.elements;
            t.title && (t.titlebar.remove(), t.titlebar = t.title = t.button = o, e !== s && this.reposition())
        },
        w._createPosClass = function(e) {
            return T + "-pos-" + (e || this.options.position.my).abbrev()
        },
        w.reposition = function(n, o) {
            if (!this.rendered || this.positioning || this.destroyed) return this;
            this.positioning = i;
            var u = this.cache,
            a = this.tooltip,
            f = this.options.position,
            l = f.target,
            m = f.my,
            g = f.at,
            y = f.viewport,
            b = f.container,
            w = f.adjust,
            E = w.method.split(" "),
            S = a.outerWidth(s),
            T = a.outerHeight(s),
            N = 0,
            C = 0,
            k = a.css("position"),
            L = {
                left: 0,
                top: 0
            },
            A = a[0].offsetWidth > 0,
            O = n && n.type === "scroll",
            M = r(e),
            _ = b[0].ownerDocument,
            D = this.mouse,
            P,
            H,
            B,
            j;
            if (r.isArray(l) && l.length === 2) g = {
                x: h,
                y: c
            },
            L = {
                left: l[0],
                top: l[1]
            };
            else if (l === "mouse") g = {
                x: h,
                y: c
            },
            (!w.mouse || this.options.hide.distance) && u.origin && u.origin.pageX ? n = u.origin: !n || n && (n.type === "resize" || n.type === "scroll") ? n = u.event: D && D.pageX && (n = D),
            k !== "static" && (L = b.offset()),
            _.body.offsetWidth !== (e.innerWidth || _.documentElement.clientWidth) && (H = r(t.body).offset()),
            L = {
                left: n.pageX - L.left + (H && H.left || 0),
                top: n.pageY - L.top + (H && H.top || 0)
            },
            w.mouse && O && D && (L.left -= (D.scrollX || 0) - M.scrollLeft(), L.top -= (D.scrollY || 0) - M.scrollTop());
            else {
                l === "event" ? n && n.target && n.type !== "scroll" && n.type !== "resize" ? u.target = r(n.target) : n.target || (u.target = this.elements.target) : l !== "event" && (u.target = r(l.jquery ? l: this.elements.target)),
                l = u.target,
                l = r(l).eq(0);
                if (l.length === 0) return this;
                l[0] === t || l[0] === e ? (N = F.iOS ? e.innerWidth: l.width(), C = F.iOS ? e.innerHeight: l.height(), l[0] === e && (L = {
                    top: (y || l).scrollTop(),
                    left: (y || l).scrollLeft()
                })) : x.imagemap && l.is("area") ? P = x.imagemap(this, l, g, x.viewport ? E: s) : x.svg && l && l[0].ownerSVGElement ? P = x.svg(this, l, g, x.viewport ? E: s) : (N = l.outerWidth(s), C = l.outerHeight(s), L = l.offset()),
                P && (N = P.width, C = P.height, H = P.offset, L = P.position),
                L = this.reposition.offset(l, L, b);
                if (F.iOS > 3.1 && F.iOS < 4.1 || F.iOS >= 4.3 && F.iOS < 4.33 || !F.iOS && k === "fixed") L.left -= M.scrollLeft(),
                L.top -= M.scrollTop();
                if (!P || P && P.adjustable !== s) L.left += g.x === d ? N: g.x === v ? N / 2 : 0,
                L.top += g.y === p ? C: g.y === v ? C / 2 : 0
            }
            return L.left += w.x + (m.x === d ? -S: m.x === v ? -S / 2 : 0),
            L.top += w.y + (m.y === p ? -T: m.y === v ? -T / 2 : 0),
            x.viewport ? (B = L.adjusted = x.viewport(this, L, f, N, C, S, T), H && B.left && (L.left += H.left), H && B.top && (L.top += H.top), B.my && (this.position.my = B.my)) : L.adjusted = {
                left: 0,
                top: 0
            },
            u.posClass !== (j = this._createPosClass(this.position.my)) && a.removeClass(u.posClass).addClass(u.posClass = j),
            this._trigger("move", [L, y.elem || y], n) ? (delete L.adjusted, o === s || !A || isNaN(L.left) || isNaN(L.top) || l === "mouse" || !r.isFunction(f.effect) ? a.css(L) : r.isFunction(f.effect) && (f.effect.call(a, this, r.extend({},
            L)), a.queue(function(e) {
                r(this).css({
                    opacity: "",
                    height: ""
                }),
                F.ie && this.style.removeAttribute("filter"),
                e()
            })), this.positioning = s, this) : this
        },
        w.reposition.offset = function(e, n, i) {
            function h(e, t) {
                n.left += t * e.scrollLeft(),
                n.top += t * e.scrollTop()
            }
            if (!i[0]) return n;
            var s = r(e[0].ownerDocument),
            o = !!F.ie && t.compatMode !== "CSS1Compat",
            u = i[0],
            a,
            f,
            l,
            c;
            do(f = r.css(u, "position")) !== "static" && (f === "fixed" ? (l = u.getBoundingClientRect(), h(s, -1)) : (l = r(u).position(), l.left += parseFloat(r.css(u, "borderLeftWidth")) || 0, l.top += parseFloat(r.css(u, "borderTopWidth")) || 0), n.left -= l.left + (parseFloat(r.css(u, "marginLeft")) || 0), n.top -= l.top + (parseFloat(r.css(u, "marginTop")) || 0), !a && (c = r.css(u, "overflow")) !== "hidden" && c !== "visible" && (a = r(u)));
            while (u = u.offsetParent);
            return a && (a[0] !== s[0] || o) && h(a, 1),
            n
        };
        var $ = (E = w.reposition.Corner = function(e, t) {
            e = ("" + e).replace(/([A-Z])/, " $1").replace(/middle/gi, v).toLowerCase(),
            this.x = (e.match(/left|right/i) || e.match(/center/) || ["inherit"])[0].toLowerCase(),
            this.y = (e.match(/top|bottom|center/i) || ["inherit"])[0].toLowerCase(),
            this.forceY = !!t;
            var n = e.charAt(0);
            this.precedance = n === "t" || n === "b" ? a: u
        }).prototype;
        $.invert = function(e, t) {
            this[e] = this[e] === h ? d: this[e] === d ? h: t || this[e]
        },
        $.string = function(e) {
            var t = this.x,
            n = this.y,
            r = t !== n ? t === "center" || n !== "center" && (this.precedance === a || this.forceY) ? [n, t] : [t, n] : [t];
            return e !== !1 ? r.join(" ") : r
        },
        $.abbrev = function() {
            var e = this.string(!1);
            return e[0].charAt(0) + (e[1] && e[1].charAt(0) || "")
        },
        $.clone = function() {
            return new E(this.string(), this.forceY)
        },
        w.toggle = function(e, n) {
            var u = this.cache,
            a = this.options,
            f = this.tooltip;
            if (n) {
                if (/over|enter/.test(n.type) && u.event && /out|leave/.test(u.event.type) && a.show.target.add(n.target).length === a.show.target.length && f.has(n.relatedTarget).length) return this;
                u.event = r.event.fix(n)
            }
            this.waiting && !e && (this.hiddenDuringWait = i);
            if (!this.rendered) return e ? this.render(1) : this;
            if (this.destroyed || this.disabled) return this;
            var l = e ? "show": "hide",
            c = this.options[l],
            h = this.options[e ? "hide": "show"],
            p = this.options.position,
            d = this.options.content,
            v = this.tooltip.css("width"),
            m = this.tooltip.is(":visible"),
            g = e || c.target.length === 1,
            y = !n || c.target.length < 2 || u.target[0] === n.target,
            b,
            w,
            E,
            S,
            x;
            return (typeof e).search("boolean|number") && (e = !m),
            b = !f.is(":animated") && m === e && y,
            w = b ? o: !!this._trigger(l, [90]),
            this.destroyed ? this: (w !== s && e && this.focus(n), !w || b ? this: (r.attr(f[0], "aria-hidden", !e), e ? (this.mouse && (u.origin = r.event.fix(this.mouse)), r.isFunction(d.text) && this._updateContent(d.text, s), r.isFunction(d.title) && this._updateTitle(d.title, s), !j && p.target === "mouse" && p.adjust.mouse && (r(t).bind("mousemove." + T, this._storeMouse), j = i), v || f.css("width", f.outerWidth(s)), this.reposition(n, arguments[2]), v || f.css("width", ""), !c.solo || (typeof c.solo == "string" ? r(c.solo) : r(L, c.solo)).not(f).not(c.target).qtip("hide", r.Event("tooltipsolo"))) : (clearTimeout(this.timers.show), delete u.origin, j && !r(L + '[tracking="true"]:visible', c.solo).not(f).length && (r(t).unbind("mousemove." + T), j = s), this.blur(n)), x = r.proxy(function() {
                e ? (F.ie && f[0].style.removeAttribute("filter"), f.css("overflow", ""), "string" == typeof c.autofocus && r(this.options.show.autofocus, f).focus(), this.options.show.target.trigger("qtip-" + this.id + "-inactive")) : f.css({
                    display: "",
                    visibility: "",
                    opacity: "",
                    left: "",
                    top: ""
                }),
                this._trigger(e ? "visible": "hidden")
            },
            this), c.effect === s || g === s ? (f[l](), x()) : r.isFunction(c.effect) ? (f.stop(1, 1), c.effect.call(f, this), f.queue("fx",
            function(e) {
                x(),
                e()
            })) : f.fadeTo(90, e ? 1 : 0, x), e && c.target.trigger("qtip-" + this.id + "-inactive"), this))
        },
        w.show = function(e) {
            return this.toggle(i, e)
        },
        w.hide = function(e) {
            return this.toggle(s, e)
        },
        w.focus = function(e) {
            if (!this.rendered || this.destroyed) return this;
            var t = r(L),
            n = this.tooltip,
            i = parseInt(n[0].style.zIndex, 10),
            s = b.zindex + t.length,
            o;
            return n.hasClass(_) || this._trigger("focus", [s], e) && (i !== s && (t.each(function() {
                this.style.zIndex > i && (this.style.zIndex = this.style.zIndex - 1)
            }), t.filter("." + _).qtip("blur", e)), n.addClass(_)[0].style.zIndex = s),
            this
        },
        w.blur = function(e) {
            return ! this.rendered || this.destroyed ? this: (this.tooltip.removeClass(_), this._trigger("blur", [this.tooltip.css("zIndex")], e), this)
        },
        w.disable = function(e) {
            return this.destroyed ? this: (e === "toggle" ? e = this.rendered ? !this.tooltip.hasClass(P) : !this.disabled: "boolean" != typeof e && (e = i), this.rendered && this.tooltip.toggleClass(P, e).attr("aria-disabled", e), this.disabled = !!e, this)
        },
        w.enable = function() {
            return this.disable(s)
        },
        w._createButton = function() {
            var e = this,
            t = this.elements,
            n = t.tooltip,
            i = this.options.content.button,
            o = typeof i == "string",
            u = o ? i: "Close tooltip";
            t.button && t.button.remove(),
            i.jquery ? t.button = i: t.button = r("<a />", {
                "class": "qtip-close " + (this.options.style.widget ? "": T + "-icon"),
                title: u,
                "aria-label": u
            }).prepend(r("<span />", {
                "class": "ui-icon ui-icon-close",
                html: "&times;"
            })),
            t.button.appendTo(t.titlebar || n).attr("role", "button").click(function(t) {
                return n.hasClass(P) || e.hide(t),
                s
            })
        },
        w._updateButton = function(e) {
            if (!this.rendered) return s;
            var t = this.elements.button;
            e ? this._createButton() : t.remove()
        },
        w._setWidget = function() {
            var e = this.options.style.widget,
            t = this.elements,
            n = t.tooltip,
            r = n.hasClass(P);
            n.removeClass(P),
            P = e ? "ui-state-disabled": "qtip-disabled",
            n.toggleClass(P, r),
            n.toggleClass("ui-helper-reset " + J(), e).toggleClass(M, this.options.style.def && !e),
            t.content && t.content.toggleClass(J("content"), e),
            t.titlebar && t.titlebar.toggleClass(J("header"), e),
            t.button && t.button.toggleClass(T + "-icon", !e)
        },
        w._storeMouse = function(e) {
            return (this.mouse = r.event.fix(e)).type = "mousemove",
            this
        },
        w._bind = function(e, t, n, i, s) {
            if (!e || !n || !t.length) return;
            var o = "." + this._id + (i ? "-" + i: "");
            return r(e).bind((t.split ? t: t.join(o + " ")) + o, r.proxy(n, s || this)),
            this
        },
        w._unbind = function(e, t) {
            return e && r(e).unbind("." + this._id + (t ? "-" + t: "")),
            this
        },
        w._trigger = function(e, t, n) {
            var i = r.Event("tooltip" + e);
            return i.originalEvent = n && r.extend({},
            n) || this.cache.event || o,
            this.triggering = e,
            this.tooltip.trigger(i, [this].concat(t || [])),
            this.triggering = s,
            !i.isDefaultPrevented()
        },
        w._bindEvents = function(e, t, n, i, s, o) {
            var u = n.filter(i).add(i.filter(n)),
            a = [];
            u.length && (r.each(t,
            function(t, n) {
                var i = r.inArray(n, e);
                i > -1 && a.push(e.splice(i, 1)[0])
            }), a.length && (this._bind(u, a,
            function(e) {
                var t = this.rendered ? this.tooltip[0].offsetWidth > 0 : !1; (t ? o: s).call(this, e)
            }), n = n.not(u), i = i.not(u))),
            this._bind(n, e, s),
            this._bind(i, t, o)
        },
        w._assignInitialEvents = function(e) {
            function f(e) {
                if (this.disabled || this.destroyed) return s;
                this.cache.event = e && r.event.fix(e),
                this.cache.target = e && r(e.target),
                clearTimeout(this.timers.show),
                this.timers.show = K.call(this,
                function() {
                    this.render(typeof e == "object" || t.show.ready)
                },
                t.show.delay)
            }
            var t = this.options,
            n = t.show.target,
            o = t.hide.target,
            u = t.show.event ? r.trim("" + t.show.event).split(" ") : [],
            a = t.hide.event ? r.trim("" + t.hide.event).split(" ") : [];
            this._bind(this.elements.target, ["remove", "removeqtip"],
            function(e) {
                this.destroy(!0)
            },
            "destroy"),
            /mouse(over|enter)/i.test(t.show.event) && !/mouse(out|leave)/i.test(t.hide.event) && a.push("mouseleave"),
            this._bind(n, "mousemove",
            function(e) {
                this._storeMouse(e),
                this.cache.onTarget = i
            }),
            this._bindEvents(u, a, n, o, f,
            function() {
                if (!this.timers) return s;
                clearTimeout(this.timers.show)
            }),
            (t.show.ready || t.prerender) && f.call(this, e)
        },
        w._assignEvents = function() {
            var n = this,
            i = this.options,
            o = i.position,
            u = this.tooltip,
            a = i.show.target,
            f = i.hide.target,
            l = o.container,
            c = o.viewport,
            h = r(t),
            p = r(t.body),
            d = r(e),
            v = i.show.event ? r.trim("" + i.show.event).split(" ") : [],
            m = i.hide.event ? r.trim("" + i.hide.event).split(" ") : [];
            r.each(i.events,
            function(e, t) {
                n._bind(u, e === "toggle" ? ["tooltipshow", "tooltiphide"] : ["tooltip" + e], t, null, u)
            }),
            /mouse(out|leave)/i.test(i.hide.event) && i.hide.leave === "window" && this._bind(h, ["mouseout", "blur"],
            function(e) { ! /select|option/.test(e.target.nodeName) && !e.relatedTarget && this.hide(e)
            }),
            i.hide.fixed ? f = f.add(u.addClass(O)) : /mouse(over|enter)/i.test(i.show.event) && this._bind(f, "mouseleave",
            function() {
                clearTimeout(this.timers.show)
            }),
            ("" + i.hide.event).indexOf("unfocus") > -1 && this._bind(l.closest("html"), ["mousedown", "touchstart"],
            function(e) {
                var t = r(e.target),
                n = this.rendered && !this.tooltip.hasClass(P) && this.tooltip[0].offsetWidth > 0,
                i = t.parents(L).filter(this.tooltip[0]).length > 0;
                t[0] !== this.target[0] && t[0] !== this.tooltip[0] && !i && !this.target.has(t[0]).length && n && this.hide(e)
            }),
            "number" == typeof i.hide.inactive && (this._bind(a, "qtip-" + this.id + "-inactive", Y, "inactive"), this._bind(f.add(u), b.inactiveEvents, Y)),
            this._bindEvents(v, m, a, f, Q, G),
            this._bind(a.add(u), "mousemove",
            function(e) {
                if ("number" == typeof i.hide.distance) {
                    var t = this.cache.origin || {},
                    n = this.options.hide.distance,
                    r = Math.abs; (r(e.pageX - t.pageX) >= n || r(e.pageY - t.pageY) >= n) && this.hide(e)
                }
                this._storeMouse(e)
            }),
            o.target === "mouse" && o.adjust.mouse && (i.hide.event && this._bind(a, ["mouseenter", "mouseleave"],
            function(e) {
                if (!this.cache) return s;
                this.cache.onTarget = e.type === "mouseenter"
            }), this._bind(h, "mousemove",
            function(e) {
                this.rendered && this.cache.onTarget && !this.tooltip.hasClass(P) && this.tooltip[0].offsetWidth > 0 && this.reposition(e)
            })),
            (o.adjust.resize || c.length) && this._bind(r.event.special.resize ? c: d, "resize", Z),
            o.adjust.scroll && this._bind(d.add(o.container), "scroll", Z)
        },
        w._unassignEvents = function() {
            var n = this.options,
            i = n.show.target,
            s = n.hide.target,
            o = r.grep([this.elements.target[0], this.rendered && this.tooltip[0], n.position.container[0], n.position.viewport[0], n.position.container.closest("html")[0], e, t],
            function(e) {
                return typeof e == "object"
            });
            i && i.toArray && (o = o.concat(i.toArray())),
            s && s.toArray && (o = o.concat(s.toArray())),
            this._unbind(o)._unbind(o, "destroy")._unbind(o, "inactive")
        },
        r(function() {
            et(L, ["mouseenter", "mouseleave"],
            function(e) {
                var t = e.type === "mouseenter",
                n = r(e.currentTarget),
                i = r(e.relatedTarget || e.target),
                s = this.options;
                t ? (this.focus(e), n.hasClass(O) && !n.hasClass(P) && clearTimeout(this.timers.hide)) : s.position.target === "mouse" && s.position.adjust.mouse && s.hide.event && s.show.target && !i.closest(s.show.target[0]).length && this.hide(e),
                n.toggleClass(D, t)
            }),
            et("[" + C + "]", A, Y)
        }),
        b = r.fn.qtip = function(e, t, u) {
            var a = ("" + e).toLowerCase(),
            f = o,
            l = r.makeArray(arguments).slice(1),
            c = l[l.length - 1],
            h = this[0] ? r.data(this[0], T) : o;
            if (!arguments.length && h || a === "api") return h;
            if ("string" == typeof e) return this.each(function() {
                var e = r.data(this, T);
                if (!e) return i;
                c && c.timeStamp && (e.cache.event = c);
                if (!t || a !== "option" && a !== "options") e[a] && e[a].apply(e, l);
                else {
                    if (u === n && !r.isPlainObject(t)) return f = e.get(t),
                    s;
                    e.set(t, u)
                }
            }),
            f !== o ? f: this;
            if ("object" == typeof e || !arguments.length) return h = U(r.extend(i, {},
            e)),
            this.each(function(e) {
                var t, n;
                n = r.isArray(h.id) ? h.id[e] : h.id,
                n = !n || n === s || n.length < 1 || b.api[n] ? b.nextid++:n,
                t = tt(r(this), n, h);
                if (t === s) return i;
                b.api[n] = t,
                r.each(x,
                function() {
                    this.initialize === "initialize" && this(t)
                }),
                t._assignInitialEvents(c)
            })
        },
        r.qtip = I,
        b.api = {},
        r.each({
            attr: function(e, t) {
                if (this.length) {
                    var n = this[0],
                    i = "title",
                    s = r.data(n, "qtip");
                    if (e === i && s && "object" == typeof s && s.options.suppress) return arguments.length < 2 ? r.attr(n, B) : (s && s.options.content.attr === i && s.cache.attr && s.set("content.text", t), this.attr(B, t))
                }
                return r.fn["attr" + H].apply(this, arguments)
            },
            clone: function(e) {
                var t = r([]),
                n = "title",
                i = r.fn["clone" + H].apply(this, arguments);
                return e || i.filter("[" + B + "]").attr("title",
                function() {
                    return r.attr(this, B)
                }).removeAttr(B),
                i
            }
        },
        function(e, t) {
            if (!t || r.fn[e + H]) return i;
            var n = r.fn[e + H] = r.fn[e];
            r.fn[e] = function() {
                return t.apply(this, arguments) || n.apply(this, arguments)
            }
        }),
        r.ui || (r["cleanData" + H] = r.cleanData, r.cleanData = function(e) {
            for (var t = 0,
            n; (n = r(e[t])).length; t++) if (n.attr(N)) try {
                n.triggerHandler("removeqtip")
            } catch(i) {}
            r["cleanData" + H].apply(this, arguments)
        }),
        b.version = "2.2.0-63-",
        b.nextid = 0,
        b.inactiveEvents = A,
        b.zindex = 15e3,
        b.defaults = {
            prerender: s,
            id: s,
            overwrite: i,
            suppress: i,
            content: {
                text: i,
                attr: "title",
                title: s,
                button: s
            },
            position: {
                my: "top left",
                at: "bottom right",
                target: s,
                container: s,
                viewport: s,
                adjust: {
                    x: 0,
                    y: 0,
                    mouse: i,
                    scroll: i,
                    resize: i,
                    method: "flipinvert flipinvert"
                },
                effect: function(e, t, n) {
                    r(this).animate(t, {
                        duration: 200,
                        queue: s
                    })
                }
            },
            show: {
                target: s,
                event: "mouseenter",
                effect: i,
                delay: 90,
                solo: s,
                ready: s,
                autofocus: s
            },
            hide: {
                target: s,
                event: "mouseleave",
                effect: i,
                delay: 0,
                fixed: s,
                inactive: s,
                leave: "window",
                distance: s
            },
            style: {
                classes: "",
                widget: s,
                width: s,
                height: s,
                def: i
            },
            events: {
                render: o,
                move: o,
                show: o,
                hide: o,
                toggle: o,
                visible: o,
                hidden: o,
                focus: o,
                blur: o
            }
        };
        var nt, rt = ".qtip-tip",
        it = "margin",
        st = "border",
        ot = "color",
        ut = "background-color",
        at = "transparent",
        ft = " !important",
        lt = !!t.createElement("canvas").getContext,
        ct = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,
        pt = {},
        dt = ["Webkit", "O", "Moz", "ms"];
        if (!lt) var gt = function(e, t, n) {
            return "<qtipvml:" + e + ' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" ' + (t || "") + ' style="behavior: url(#default#VML); ' + (n || "") + '" />'
        };
        else var yt = e.devicePixelRatio || 1,
        bt = function() {
            var e = t.createElement("canvas").getContext("2d");
            return e.backingStorePixelRatio || e.webkitBackingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || 1
        } (),
        wt = yt / bt;
        r.extend(Et.prototype, {
            init: function(e) {
                var t, n;
                n = this.element = e.elements.tip = r("<div />", {
                    "class": T + "-tip"
                }).prependTo(e.tooltip),
                lt ? (t = r("<canvas />").appendTo(this.element)[0].getContext("2d"), t.lineJoin = "miter", t.miterLimit = 1e5, t.save()) : (t = gt("shape", 'coordorigin="0,0"', "position:absolute;"), this.element.html(t + t), e._bind(r("*", n).add(n), ["click", "mousedown"],
                function(e) {
                    e.stopPropagation()
                },
                this._ns)),
                e._bind(e.tooltip, "tooltipmove", this.reposition, this._ns, this),
                this.create()
            },
            _swapDimensions: function() {
                this.size[0] = this.options.height,
                this.size[1] = this.options.width
            },
            _resetDimensions: function() {
                this.size[0] = this.options.width,
                this.size[1] = this.options.height
            },
            _useTitle: function(e) {
                var t = this.qtip.elements.titlebar;
                return t && (e.y === c || e.y === v && this.element.position().top + this.size[1] / 2 + this.options.offset < t.outerHeight(i))
            },
            _parseCorner: function(e) {
                var t = this.qtip.options.position.my;
                return e === s || t === s ? e = s: e === i ? e = new E(t.string()) : e.string || (e = new E(e), e.fixed = i),
                e
            },
            _parseWidth: function(e, t, n) {
                var r = this.qtip.elements,
                i = st + ht(t) + "Width";
                return (n ? mt(n, i) : mt(r.content, i) || mt(this._useTitle(e) && r.titlebar || r.content, i) || mt(r.tooltip, i)) || 0
            },
            _parseRadius: function(e) {
                var t = this.qtip.elements,
                n = st + ht(e.y) + ht(e.x) + "Radius";
                return F.ie < 9 ? 0 : mt(this._useTitle(e) && t.titlebar || t.content, n) || mt(t.tooltip, n) || 0
            },
            _invalidColour: function(e, t, n) {
                var r = e.css(t);
                return ! r || n && r === e.css(n) || ct.test(r) ? s: r
            },
            _parseColours: function(e) {
                var t = this.qtip.elements,
                n = this.element.css("cssText", ""),
                i = st + ht(e[e.precedance]) + ht(ot),
                s = this._useTitle(e) && t.titlebar || t.content,
                o = this._invalidColour,
                u = [];
                return u[0] = o(n, ut) || o(s, ut) || o(t.content, ut) || o(t.tooltip, ut) || n.css(ut),
                u[1] = o(n, i, ot) || o(s, i, ot) || o(t.content, i, ot) || o(t.tooltip, i, ot) || t.tooltip.css(i),
                r("*", n).add(n).css("cssText", ut + ":" + at + ft + ";" + st + ":0" + ft + ";"),
                u
            },
            _calculateSize: function(e) {
                var t = e.precedance === a,
                n = this.options.width,
                r = this.options.height,
                i = e.abbrev() === "c",
                s = (t ? n: r) * (i ? .5 : 1),
                o = Math.pow,
                u = Math.round,
                f,
                l,
                c,
                h = Math.sqrt(o(s, 2) + o(r, 2)),
                p = [this.border / s * h, this.border / r * h];
                return p[2] = Math.sqrt(o(p[0], 2) - o(this.border, 2)),
                p[3] = Math.sqrt(o(p[1], 2) - o(this.border, 2)),
                f = h + p[2] + p[3] + (i ? 0 : p[0]),
                l = f / h,
                c = [u(l * n), u(l * r)],
                t ? c: c.reverse()
            },
            _calculateTip: function(e, t, n) {
                n = n || 1,
                t = t || this.size;
                var r = t[0] * n,
                i = t[1] * n,
                s = Math.ceil(r / 2),
                o = Math.ceil(i / 2),
                u = {
                    br: [0, 0, r, i, r, 0],
                    bl: [0, 0, r, 0, 0, i],
                    tr: [0, i, r, 0, r, i],
                    tl: [0, 0, 0, i, r, i],
                    tc: [0, i, s, 0, r, i],
                    bc: [0, 0, r, 0, s, i],
                    rc: [0, 0, r, o, 0, i],
                    lc: [r, 0, r, i, 0, o]
                };
                return u.lt = u.br,
                u.rt = u.bl,
                u.lb = u.tr,
                u.rb = u.tl,
                u[e.abbrev()]
            },
            _drawCoords: function(e, t) {
                e.beginPath(),
                e.moveTo(t[0], t[1]),
                e.lineTo(t[2], t[3]),
                e.lineTo(t[4], t[5]),
                e.closePath()
            },
            create: function() {
                var e = this.corner = (lt || F.ie) && this._parseCorner(this.options.corner);
                if (this.enabled = !!this.corner && this.corner.abbrev() !== "c") this.qtip.cache.corner = e.clone(),
                this.update();
                return this.element.toggle(this.enabled),
                this.corner
            },
            update: function(t, n) {
                if (!this.enabled) return this;
                var o = this.qtip.elements,
                m = this.element,
                g = m.children(),
                y = this.options,
                b = this.size,
                w = y.mimic,
                S = Math.round,
                x,
                T,
                N,
                C,
                k,
                L,
                A,
                O,
                M;
                t || (t = this.qtip.cache.corner || this.corner),
                w === s ? w = t: (w = new E(w), w.precedance = t.precedance, w.x === "inherit" ? w.x = t.x: w.y === "inherit" ? w.y = t.y: w.x === w.y && (w[t.precedance] = t[t.precedance])),
                T = w.precedance,
                t.precedance === u ? this._swapDimensions() : this._resetDimensions(),
                x = this.color = this._parseColours(t),
                x[1] !== at ? (O = this.border = this._parseWidth(t, t[t.precedance]), y.border && O < 1 && !ct.test(x[1]) && (x[0] = x[1]), this.border = O = y.border !== i ? y.border: O) : this.border = O = 0,
                A = this.size = this._calculateSize(t),
                m.css({
                    width: A[0],
                    height: A[1],
                    lineHeight: A[1] + "px"
                }),
                t.precedance === a ? L = [S(w.x === h ? O: w.x === d ? A[0] - b[0] - O: (A[0] - b[0]) / 2), S(w.y === c ? A[1] - b[1] : 0)] : L = [S(w.x === h ? A[0] - b[0] : 0), S(w.y === c ? O: w.y === p ? A[1] - b[1] - O: (A[1] - b[1]) / 2)],
                lt ? (N = g[0].getContext("2d"), N.restore(), N.save(), N.clearRect(0, 0, 6e3, 6e3), C = this._calculateTip(w, b, wt), k = this._calculateTip(w, this.size, wt), g.attr(f, A[0] * wt).attr(l, A[1] * wt), g.css(f, A[0]).css(l, A[1]), this._drawCoords(N, k), N.fillStyle = x[1], N.fill(), N.translate(L[0] * wt, L[1] * wt), this._drawCoords(N, C), N.fillStyle = x[0], N.fill()) : (C = this._calculateTip(w), C = "m" + C[0] + "," + C[1] + " l" + C[2] + "," + C[3] + " " + C[4] + "," + C[5] + " xe", L[2] = O && /^(r|b)/i.test(t.string()) ? F.ie === 8 ? 2 : 1 : 0, g.css({
                    coordsize: A[0] + O + " " + (A[1] + O),
                    antialias: "" + (w.string().indexOf(v) > -1),
                    left: L[0] - L[2] * Number(T === u),
                    top: L[1] - L[2] * Number(T === a),
                    width: A[0] + O,
                    height: A[1] + O
                }).each(function(e) {
                    var t = r(this);
                    t[t.prop ? "prop": "attr"]({
                        coordsize: A[0] + O + " " + (A[1] + O),
                        path: C,
                        fillcolor: x[0],
                        filled: !!e,
                        stroked: !e
                    }).toggle( !! O || !!e),
                    !e && t.html(gt("stroke", 'weight="' + O * 2 + 'px" color="' + x[1] + '" miterlimit="1000" joinstyle="miter"'))
                })),
                e.opera && setTimeout(function() {
                    o.tip.css({
                        display: "inline-block",
                        visibility: "visible"
                    })
                },
                1),
                n !== s && this.calculate(t, A)
            },
            calculate: function(e, t) {
                if (!this.enabled) return s;
                var n = this,
                i = this.qtip.elements,
                o = this.element,
                f = this.options.offset,
                l = i.tooltip.hasClass("ui-widget"),
                p = {},
                d,
                m;
                return e = e || this.corner,
                d = e.precedance,
                t = t || this._calculateSize(e),
                m = [e.x, e.y],
                d === u && m.reverse(),
                r.each(m,
                function(r, s) {
                    var o, u, l;
                    s === v ? (o = d === a ? h: c, p[o] = "50%", p[it + "-" + o] = -Math.round(t[d === a ? 0 : 1] / 2) + f) : (o = n._parseWidth(e, s, i.tooltip), u = n._parseWidth(e, s, i.content), l = n._parseRadius(e), p[s] = Math.max( - n.border, r ? u: f + (l > o ? l: -o)))
                }),
                p[e[d]] -= t[d === u ? 0 : 1],
                o.css({
                    margin: "",
                    top: "",
                    bottom: "",
                    left: "",
                    right: ""
                }).css(p),
                p
            },
            reposition: function(e, t, r, o) {
                function N(e, t, n, r, i) {
                    e === y && l.precedance === t && m[r] && l[n] !== v ? l.precedance = l.precedance === u ? a: u: e !== y && m[r] && (l[t] = l[t] === v ? m[r] > 0 ? r: i: l[t] === r ? i: r)
                }
                function C(e, t, i) {
                    l[e] === v ? x[it + "-" + t] = E[e] = S[it + "-" + t] - m[t] : (T = S[i] !== n ? [m[t], -S[t]] : [ - m[t], S[t]], (E[e] = Math.max(T[0], T[1])) > T[0] && (r[t] -= m[t], E[t] = s), x[S[i] !== n ? i: t] = E[e])
                }
                if (!this.enabled) return;
                var f = t.cache,
                l = this.corner.clone(),
                m = r.adjusted,
                g = t.options.position.adjust.method.split(" "),
                b = g[0],
                w = g[1] || g[0],
                E = {
                    left: s,
                    top: s,
                    x: 0,
                    y: 0
                },
                S,
                x = {},
                T;
                this.corner.fixed !== i && (N(b, u, a, h, d), N(w, a, u, c, p), (l.string() !== f.corner.string() || f.cornerTop !== m.top || f.cornerLeft !== m.left) && this.update(l, s)),
                S = this.calculate(l),
                S.right !== n && (S.left = -S.right),
                S.bottom !== n && (S.top = -S.bottom),
                S.user = this.offset,
                (E.left = b === y && !!m.left) && C(u, h, d),
                (E.top = w === y && !!m.top) && C(a, c, p),
                this.element.css(x).toggle(!(E.x && E.y || l.x === v && E.y || l.y === v && E.x)),
                r.left -= S.left.charAt ? S.user: b !== y || E.top || !E.left && !E.top ? S.left + this.border: 0,
                r.top -= S.top.charAt ? S.user: w !== y || E.left || !E.left && !E.top ? S.top + this.border: 0,
                f.cornerLeft = m.left,
                f.cornerTop = m.top,
                f.corner = l.clone()
            },
            destroy: function() {
                this.qtip._unbind(this.qtip.tooltip, this._ns),
                this.qtip.elements.tip && this.qtip.elements.tip.find("*").remove().end().remove()
            }
        }),
        nt = x.tip = function(e) {
            return new Et(e, e.options.style.tip)
        },
        nt.initialize = "render",
        nt.sanitize = function(e) {
            if (e.style && "tip" in e.style) {
                var t = e.style.tip;
                typeof t != "object" && (t = e.style.tip = {
                    corner: t
                }),
                /string|boolean/i.test(typeof t.corner) || (t.corner = i)
            }
        },
        S.tip = {
            "^position.my|style.tip.(corner|mimic|border)$": function() {
                this.create(),
                this.qtip.reposition()
            },
            "^style.tip.(height|width)$": function(e) {
                this.size = [e.width, e.height],
                this.update(),
                this.qtip.reposition()
            },
            "^content.title|style.(classes|widget)$": function() {
                this.update()
            }
        },
        r.extend(i, b.defaults, {
            style: {
                tip: {
                    corner: i,
                    mimic: s,
                    width: 6,
                    height: 6,
                    border: i,
                    offset: 0
                }
            }
        }),
        x.viewport = function(n, r, i, o, m, b, w) {
            function R(e, t, n, i, s, o, u, a, l) {
                var c = r[s],
                h = x[e],
                p = T[e],
                d = n === y,
                m = h === s ? l: h === o ? -l: -l / 2,
                b = p === s ? a: p === o ? -a: -a / 2,
                w = I[s] + q[s] - (B ? 0 : H[s]),
                E = w - c,
                S = c + l - (u === f ? j: F) - w,
                N = m - (x.precedance === e || h === x[t] ? b: 0) - (p === v ? a / 2 : 0);
                return d ? (N = (h === s ? 1 : -1) * m, r[s] += E > 0 ? E: S > 0 ? -S: 0, r[s] = Math.max( - H[s] + q[s], c - N, Math.min(Math.max( - H[s] + q[s] + (u === f ? j: F), c + N), r[s], h === "center" ? c - m: 1e9))) : (i *= n === g ? 2 : 0, E > 0 && (h !== s || S > 0) ? (r[s] -= N + i, P.invert(e, s)) : S > 0 && (h !== o || E > 0) && (r[s] -= (h === v ? -N: N) + i, P.invert(e, o)), r[s] < I && -r[s] > S && (r[s] = c, P = x.clone())),
                r[s] - c
            }
            var E = i.target,
            S = n.elements.tooltip,
            x = i.my,
            T = i.at,
            N = i.adjust,
            C = N.method.split(" "),
            k = C[0],
            L = C[1] || C[0],
            A = i.viewport,
            O = i.container,
            M = n.cache,
            _ = {
                left: 0,
                top: 0
            },
            D,
            P,
            H,
            B,
            j,
            F,
            I,
            q;
            if (!A.jquery || E[0] === e || E[0] === t.body || N.method === "none") return _;
            H = O.offset() || _,
            B = O.css("position") === "static",
            D = S.css("position") === "fixed",
            j = A[0] === e ? A.width() : A.outerWidth(s),
            F = A[0] === e ? A.height() : A.outerHeight(s),
            I = {
                left: D ? 0 : A.scrollLeft(),
                top: D ? 0 : A.scrollTop()
            },
            q = A.offset() || _;
            if (k !== "shift" || L !== "shift") P = x.clone();
            return _ = {
                left: k !== "none" ? R(u, a, k, N.x, h, d, f, o, b) : 0,
                top: L !== "none" ? R(a, u, L, N.y, c, p, l, m, w) : 0,
                my: P
            },
            _
        }
    })
} (window, document),
function($) {
    "use strict";
    var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
    meta = {
        "\b": "\\b",
        "   ": "\\t",
        "\n": "\\n",
        "\f": "\\f",
        "\r": "\\r",
        '"': '\\"',
        "\\": "\\\\"
    },
    hasOwn = Object.prototype.hasOwnProperty;
    $.toJSON = typeof JSON == "object" && JSON.stringify ? JSON.stringify: function(e) {
        if (e === null) return "null";
        var t, n, r, i, s = $.type(e);
        if (s === "undefined") return undefined;
        if (s === "number" || s === "boolean") return String(e);
        if (s === "string") return $.quoteString(e);
        if (typeof e.toJSON == "function") return $.toJSON(e.toJSON());
        if (s === "date") {
            var o = e.getUTCMonth() + 1,
            u = e.getUTCDate(),
            a = e.getUTCFullYear(),
            f = e.getUTCHours(),
            l = e.getUTCMinutes(),
            c = e.getUTCSeconds(),
            h = e.getUTCMilliseconds();
            return o < 10 && (o = "0" + o),
            u < 10 && (u = "0" + u),
            f < 10 && (f = "0" + f),
            l < 10 && (l = "0" + l),
            c < 10 && (c = "0" + c),
            h < 100 && (h = "0" + h),
            h < 10 && (h = "0" + h),
            '"' + a + "-" + o + "-" + u + "T" + f + ":" + l + ":" + c + "." + h + 'Z"'
        }
        t = [];
        if ($.isArray(e)) {
            for (n = 0; n < e.length; n++) t.push($.toJSON(e[n]) || "null");
            return "[" + t.join(",") + "]"
        }
        if (typeof e == "object") {
            for (n in e) if (hasOwn.call(e, n)) {
                s = typeof n;
                if (s === "number") r = '"' + n + '"';
                else {
                    if (s !== "string") continue;
                    r = $.quoteString(n)
                }
                s = typeof e[n],
                s !== "function" && s !== "undefined" && (i = $.toJSON(e[n]), t.push(r + ":" + i))
            }
            return "{" + t.join(",") + "}"
        }
    },
    $.evalJSON = typeof JSON == "object" && JSON.parse ? JSON.parse: function(str) {
        return eval("(" + str + ")")
    },
    $.secureEvalJSON = typeof JSON == "object" && JSON.parse ? JSON.parse: function(str) {
        var filtered = str.replace(/\\["\\\/bfnrtu]/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, "");
        if (/^[\],:{}\s]*$/.test(filtered)) return eval("(" + str + ")");
        throw new SyntaxError("Error parsing JSON, source is not valid.")
    },
    $.quoteString = function(e) {
        return e.match(escape) ? '"' + e.replace(escape,
        function(e) {
            var t = meta[e];
            return typeof t == "string" ? t: (t = e.charCodeAt(), "\\u00" + Math.floor(t / 16).toString(16) + (t % 16).toString(16))
        }) + '"': '"' + e + '"'
    }
} (jQuery),
function(e, t, n) {
    $.fn.jqm = function(e) {
        var t = $.extend({},
        $.jqm.params, e);
        return this.each(function() {
            var e = $(this),
            n = $(this).data("jqm");
            n || (n = {
                ID: p++
            }),
            e.data("jqm", $.extend(t, n)).addClass("jqm-init"),
            t.trigger && $(this).jqmAddTrigger(t.trigger)
        })
    },
    $.fn.jqmAddTrigger = function(e) {
        return this.each(function() {
            a($(this), "jqmShow", e) || r("jqmAddTrigger must be called on initialized modals")
        })
    },
    $.fn.jqmAddClose = function(e) {
        return this.each(function() {
            a($(this), "jqmHide", e) || r("jqmAddClose must be called on initialized modals")
        })
    },
    $.fn.jqmShow = function(e) {
        return this.each(function() { ! this._jqmShown && i($(this), e)
        })
    },
    $.fn.jqmHide = function(e) {
        return this.each(function() {
            this._jqmShown && s($(this), e)
        })
    };
    var r = function(e) {
        t.console && t.console.error && t.console.error(e)
    },
    i = function(e, n) {
        var r = e.data("jqm"),
        n = n || t.event,
        i = parseInt(e.css("z-index")),
        i = i > 0 ? i: 3e3,
        s = $("<div></div>").addClass(r.overlayClass).css({
            height: "100%",
            width: "100%",
            position: "fixed",
            left: 0,
            top: 0,
            "z-index": i - 1,
            opacity: r.overlay / 100
        }),
        o = {
            w: e,
            c: r,
            o: s,
            t: n
        };
        e.css("z-index", i);
        if (r.ajax) {
            var u = r.target || e,
            a = r.ajax;
            u = typeof u == "string" ? $(u, e) : $(u),
            a.substr(0, 1) == "@" && (a = $(n).attr(a.substring(1))),
            u.html(r.ajaxText).load(a,
            function() {
                r.onLoad && r.onLoad.call(this, o),
                f(o)
            })
        } else f(o)
    },
    s = function(e, n) {
        var r = e.data("jqm"),
        n = n || t.event,
        i = {
            w: e,
            c: r,
            o: e.data("jqmv"),
            t: n
        };
        l(i)
    },
    o = function(e) {
        return e.c.overlay > 0 && e.o.prependTo("body"),
        e.w.show(),
        $.jqm.focusFunc(e.w),
        !0
    },
    u = function(e) {
        return e.w.hide() && e.o && e.o.remove(),
        !0
    },
    a = function(e, t, n) {
        return e.data("jqm") ? $(n).each(function() {
            this[t] = this[t] || [],
            this[t].push(e)
        }).click(function() {
            var e = this;
            return $.each(this[t],
            function(n, r) {
                r[t](e)
            }),
            !1
        }) : !1
    },
    f = function(e) {
        var t = e.w,
        n = e.o,
        r = e.c;
        r.onShow(e) !== !1 && (t[0]._jqmShown = !0, r.modal ? (!d[0] && c("bind"), d.push(t)) : t.jqmAddClose(n), r.closeClass && t.jqmAddClose($("." + r.closeClass, t)), r.toTop && n && t.before('<span id="jqmP' + r.ID + '"></span>').insertAfter(n), t.data("jqmv", n))
    },
    l = function(e) {
        var t = e.w,
        n = e.o,
        r = e.c;
        r.onHide(e) !== !1 && (t[0]._jqmShown = !1, r.modal && (d.pop(), !d[0] && c("unbind")), r.toTop && n && $("#jqmP" + r.ID).after(t).remove())
    },
    c = function(e) {
        $(document)[e]("keypress keydown mousedown", h)
    },
    h = function(e) {
        var t = $(e.target).data("jqm") || $(e.target).parents(".jqm-init:first").data("jqm"),
        n = d[d.length - 1].data("jqm");
        return t && t.ID == n.ID ? !0 : $.jqm.focusFunc(n)
    },
    p = 0,
    d = [];
    $.jqm = {
        params: {
            overlay: 50,
            overlayClass: "jqmOverlay",
            closeClass: "jqmClose",
            trigger: ".jqModal",
            ajax: !1,
            target: !1,
            ajaxText: "",
            modal: !1,
            toTop: !1,
            onShow: o,
            onHide: u,
            onLoad: !1
        },
        focusFunc: function(e) {
            return $(":input:visible:first", e).focus(),
            !1
        }
    }
} (jQuery, window),
function(e) {
    [].indexOf || (Array.prototype.indexOf = function(e) {
        for (var t = this.length; t--&&this[t] !== e;);
        return t
    }),
    [].first || (Array.prototype.first = function(t) {
        var n = {
            predicate: null,
            start: 0
        };
        e.isFunction(t) ? e.extend(n, {
            predicate: t
        }) : e.extend(n, t),
        n.start || (n.start = 0);
        for (var r = n.start; r < this.length; ++r) {
            var i = this[r];
            if (n.predicate(i)) return i
        }
        return null
    }),
    [].where || (Array.prototype.where = function(t) {
        var n = {
            predicate: null,
            start: 0
        };
        e.isFunction(t) ? e.extend(n, {
            predicate: t
        }) : e.extend(n, t),
        n.start || (n.start = 0);
        var r = [];
        for (var i = n.start; i < this.length; ++i) {
            var s = this[i];
            n.predicate(s) && r.push(s)
        }
        return r
    }),
    [].select || (Array.prototype.select = function(e) {
        var t = [];
        for (var n = 0; n < this.length; ++n) {
            var r = this[n];
            t.push(e(r))
        }
        return t
    }),
    RegExp.prototype.matches = function(e) {
        var t = [],
        n;
        while (n = this.exec(e)) t.push(n);
        return t
    },
    String.prototype.startsWith = function(e) {
        return this.slice(0, e.length) == e
    },
    String.prototype.endsWith = function(e) {
        return this.slice( - e.length) == e
    },
    String.prototype.format = function() {
        var e = arguments;
        return this.replace(/\{(\d+)\}/g,
        function(t, n) {
            return e[n]
        })
    },
    String.format = function() {
        if (arguments.length === 0) return null;
        var e = arguments[0];
        for (var t = 1; t < arguments.length; t++) {
            var n = new RegExp("\\{" + (t - 1) + "\\}", "gm");
            e = e.replace(n, arguments[t])
        }
        return e
    },
    e.fn.hasBinded = function(t, n) {
        var r = e(this).data("events")[t];
        if (!r) return ! 1;
        var i = r.first(function(e) {
            return e.handler === n
        });
        return i != null
    },
    e.fn.outerHtml = function() {
        var t = e(this);
        console.log(e);
        console.log(this);
        console.log(t);
        console.log(t[0]);
        if ("outerHTML" in t[0]) return t[0].outerHTML;
        var n = t.wrap("<div></div>").parent().html();
        return t.unwrap(),
        n
    },
    e.fn.maxInteger = function(t) {
        var n = undefined;
        return e(this).each(function() {
            var t = parseInt(e(this).val(), 10);
            if (n == undefined || t > n) n = t
        }),
        n === undefined && def !== undefined ? t: n
    },
    e.fn.maxFloat = function(t) {
        var n = undefined;
        return e(this).each(function() {
            var t = parseFloat(e(this).val());
            if (n == undefined || t > n) n = t
        }),
        n === undefined ? t: n
    },
    e.extend({
        getI18N: function(t) {
            return e.i18n || (e.i18n = {}),
            e.i18n[t]
        },
        isDomNode: function(e) {
            return typeof Node == "object" ? e instanceof Node: e && typeof e == "object" && typeof e.nodeType == "number" && typeof e.nodeName == "string"
        },
        isDomElement: function(e) {
            return typeof HTMLElement == "object" ? e instanceof HTMLElement: e && typeof e == "object" && e !== null && e.nodeType === 1 && typeof e.nodeName == "string"
        },
        getTimestamp: function() {
            return (new Date).toGMTString()
        },
        generateGuid: function(e) {
            function t() {
                return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1)
            }
            return e == null && (e = "-"),
            t() + t() + e + t() + e + t() + e + t() + e + t() + t() + t()
        },
        parseBool: function(e) {
            return /true/i.test(e)
        },
        isEmail: function(e) {
            var t = /^(?:[\w\!\#\$\%\&\'\*\+\-\\\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\\\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/;
            return t.test(e)
        },
        isDate: function(e) {
            return ! isNaN(new Date(e))
        },
        isIsoDate: function(e) {
            var t = e.match(/^(\d{4})\-(\d{1,2})-(\d{1,2})$/);
            if (!t) return ! 1;
            try {
                var n = new Date(RegExp.$1, RegExp.$2, RegExp.$3);
                return ! 0
            } catch(r) {
                return ! 1
            }
        },
        getQueryString: function(e) {
            e = e ? e: location.search;
            var t = {},
            n = (new RegExp("[?&]([^?&]+)=([^?&]+)", "g")).matches(e);
            for (var r = 0,
            i; i = n[r]; ++r) t[i[1]] = decodeURI(i[2]);
            return t
        }
    })
} (jQuery),
function(e) {
    e.extend({
        ajaxQueue: function(t) {
            function i(t) {
                r++;
                var s = t.complete;
                t.complete = function(e, t) {
                    typeof s == "function" && s(e, t),
                    r--;
                    if (n.length === 0) return;
                    var o = n[0];
                    n.splice(0, 1),
                    i(o)
                },
                e.ajax(t)
            }
            var n = [],
            t = t,
            r = 0;
            return this.add = function(e) {
                r < t ? i(e) : n.push(e)
            },
            this
        }
    })
} (jQuery),
function(e) {
    e.fn.placeholder = function(t) {
        var n = {
            showHandler: function(e, t) {
                t.show()
            },
            hideHandler: function(e, t) {
                t.hide()
            },
            locatePlaceholder: function(e) {
                return e.parent().find(".placeholder")
            }
        };
        return e.extend(!0, n, t),
        e(this).each(function() {
            var t = e(this),
            r = n.locatePlaceholder(t);
            t.focus(function() {
                n.hideHandler(t, r)
            }).blur(function() {
                t.val() === "" && n.showHandler(t, r)
            }),
            r.click(function() {
                t.focus()
            }),
            t.val() === "" ? r.show() : r.hide()
        })
    }
} (jQuery),
function(e) {
    e.fn.tabs = function(t, n) {
        var r = null,
        i = {
            currentCss: "current",
            event: "mouseenter",
            speed: 0,
            locatePane: function(e, t, n) {
                var r = t.index(e[0]);
                return n[r]
            },
            cancelTrigger: r,
            onShowing: r
        },
        s = e(this);
        t = e(t),
        e.extend(!0, i, n);
        var o = e(this).filter("." + i.currentCss + ":eq(0)");
        o.length == 0 && (o = s.eq(0));
        var u = i.locatePane(o, s, t);
        return t.hide(),
        u && e(u).show(),
        e(this).each(function(n) {
            e(this).bind(i.event,
            function(n) {
                function f() {
                    s.removeClass(i.currentCss),
                    r.addClass(i.currentCss)
                }
                function l(n) {
                    if (n.length == 0) return;
                    i.onShowing && e.isFunction(i.onShowing) && i.onShowing({
                        tab: r,
                        tabs: s,
                        pane: n,
                        panes: t
                    }),
                    n.show(i.speed)
                }
                n.preventDefault();
                var r = e(this),
                o = t.filter(":visible"),
                u = i.locatePane(r, s, t);
                if (i.cancelTrigger && e.isFunction(i.cancelTrigger)) {
                    var a = i.cancelTrigger({
                        tab: r,
                        tabs: s,
                        pane: u,
                        panes: t
                    });
                    if (a) return
                }
                if (!u) {
                    f(),
                    o.hide(i.speed);
                    return
                }
                u = e(u);
                if (o && u && o.get(0) == u.get(0)) {
                    f();
                    return
                }
                o.length > 0 ? (f(), o.hide(i.speed,
                function() {
                    l(u)
                })) : (f(), l(u))
            })
        })
    }
} (jQuery),
function(e) {
    e.extend({
        _zeroClipboards: [],
        zeroClipboard: function(t) {
            t || (t = "");
            if (typeof t == "string") {
                var n = navigator.userAgent.match(/MSIE/) ? "object": "embed",
                r = e("#zeroClipboard-container-" + t + " " + n);
                r.attr("id").match(/ZeroClipboardMovie_(\d+)/);
                var i = parseInt(RegExp.$1, 10);
                for (var s = 0; s < e._zeroClipboards.length; ++s) {
                    var o = e._zeroClipboards[s];
                    if (o.id == i) return o
                }
                return null
            }
            var u = undefined,
            a = {
                id: "",
                load: u,
                events: {
                    load: u,
                    mouseout: u
                }
            };
            e.extend(!0, a, t);
            var f = new ZeroClipboard.Client,
            l = "zeroClipboard-container-" + a.id,
            c = e('<div id="' + l + '" style="position:absolute; width:100px; height:20px; left:-9999px; top:-9999px;">' + '<a style="display:block; width:100%;height:100%; font-size:0"></a>' + "</div>").appendTo("body");
            f.setHandCursor(!0),
            f.addEventListener("mouseout",
            function(t) {
                e("#" + l).css({
                    left: "-9999px",
                    top: "-9999px"
                }),
                f.currentTarget && e(f.currentTarget).removeClass("hover"),
                a.events.mouseout && a.events.mouseout(t)
            });
            for (var h in a.events) {
                h = h.toLowerCase();
                var p = a.events[h];
                if (h == "mouseout") continue;
                f.addEventListener(h, p)
            }
            f.glue(c.find("a").get(0), l),
            f.hideContainer = function() {
                e("#" + l).css({
                    left: -9999,
                    top: -9999
                })
            },
            e._zeroClipboards.push(f)
        }
    }),
    e.fn.bindZeroClipboard = function(t) {
        t || (t = "");
        var n = e.zeroClipboard(t);
        e(this).mouseenter(function() {
            var r = e(this).offset(),
            i = e(this).outerWidth(),
            s = e(this).outerHeight(),
            o = e("#zeroClipboard-container-" + t).css({
                left: r.left,
                top: r.top,
                width: i + "px",
                height: s + "px"
            }),
            u = e(this).attr("title"),
            a = navigator.userAgent.match(/MSIE/) ? "object": "embed";
            o.find(a).attr("width", i).attr("height", s).attr("title", u),
            o.find(a).parent().width(i).height(s),
            e(this).addClass("hover"),
            n.currentTarget = this
        })
    }
} (jQuery),
function(e) {
    window.DialogResult = {
        None: 0,
        OK: 1,
        Cancel: 2,
        Abort: 3,
        Retry: 4,
        Ignore: 5,
        Yes: 6,
        No: 7
    };
    var t = {
        Close: "Close",
        None: "None",
        OK: "OK",
        Cancel: "Cancel",
        Yes: "Yes",
        No: "No",
        Retry: "Retry",
        Ignore: "Ignore",
        Abort: "Abort",
        DefaultTitle: "Dialog message",
        InfomationTitle: "Infomation",
        QuestionTitle: "Question",
        CorrectTile: "Correct",
        WarningTitle: "Warning",
        ErrorTitle: "Error"
    };
    e.extend(e.jqm, {
        messageBoxHtmlBuilder: function(n, r) {
            var i = e.extend(!0, {},
            t, e.getI18N("my.extend.dialog")),
            s = ['<div class="msgBox-close"><a href="javascript:;" data-dialogresult="' + DialogResult.None + '" title="' + i.Close + '"></a></div>', '<div class="msgBox-message">', '<i class="msgBox-icon-' + r.icon + '"></i>', "<strong>" + r.title + " !</strong>", "<p>" + r.content + "</p>", "</div>", '<div class="msgBox-button"></div>'].join("");
            n.html(s);
            var o = n.find(".msgBox-button"),
            u = function() {
                if (r.callback) {
                    var t = parseInt(e(this).attr("data-dialogresult"), 10);
                    r.callback(n, t) !== !0 && n.jqmHide()
                } else n.jqmHide()
            };
            r.buttons === "OKCancel" ? (o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.OK + '" class="msgBox-button-red">' + i.OK + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Cancel + '" class="msgBox-button-green">' + i.Cancel + "</a>").click(u))) : r.buttons === "AbortRetryIgnore" ? (o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Abort + '" class="msgBox-button-white">' + i.Abort + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Retry + '" class="msgBox-button-white">' + i.Retry + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Ignore + '" class="msgBox-button-white">' + i.Ignore + "</a>").click(u))) : r.buttons === "YesNoCancel" ? (o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Yes + '" class="msgBox-button-red">' + i.Yes + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.No + '" class="msgBox-button-green">' + i.No + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Cancel + '" class="msgBox-button-white">' + i.Cancel + "</a>").click(u))) : r.buttons === "YesNo" ? (o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Yes + '" class="msgBox-button-red">' + i.Yes + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.No + '" class="msgBox-button-green">' + i.No + "</a>").click(u))) : r.buttons === "RetryCancel" ? (o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Retry + '" class="msgBox-button-red">' + i.Retry + "</a>").click(u)), o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.Cancel + '" class="msgBox-button-green">' + i.Cancel + "</a>").click(u))) : o.append(e('<a href="javascript:;" data-dialogresult="' + DialogResult.OK + '" class="msgBox-button-red">' + i.OK + "</a>").click(u)),
            n.find(".msgBox-close>A").click(u),
            e.isFunction(n.draggable) && r.drag.dragable && (n.find(".title").css({
                cursor: "move"
            }), n.draggable({
                handle: n.find(".title")
            })),
            e.isFunction(n.resizable) && r.resize.resizable && n.resizable(e.extend(r.resize, {
                handlers: "n,e,s,w"
            }))
        },
        dialogHtmlBuilder: function(n, r) {
            var i = e.extend(!0, {},
            t, e.getI18N("my.extend.dialog")),
            s = '<div class="title clearfix"><a href="javascript:;" class="close" data-dialogresult="' + DialogResult.None + '" title="' + i.Close + '"></a>' + '<h4 data-role="title">' + r.title + "</h4>" + "</div>" + '<div class="dialog-content clearfix"  data-role="spin">' + '<iframe frameborder="0" scrolling="no" style="width:100%;height:100%" src="about:blank"></iframe>' + "</div>";
            n.html(s);
            var o = function() {
                if (r.callback) {
                    var t = parseInt(e(this).attr("data-dialogresult"), 10);
                    r.callback(n, t) !== !0 && n.jqmHide()
                } else n.jqmHide()
            };
            n.find(".close").click(o),
            e.isFunction(n.draggable) && r.drag.dragable && (n.find(".title").css({
                cursor: "move"
            }), n.draggable({
                handle: n.find(".title"),
                start: function(t, n) {
                    e("IFRAME", this).hide()
                },
                stop: function(t, n) {
                    e("IFRAME", this).show()
                }
            })),
            e.isFunction(n.resizable) && r.resize.resizable && n.resizable(e.extend(r.resize, {
                handlers: "n,e,s,w",
                iframeFix: !0,
                start: function(t, n) {
                    e("IFRAME", this).hide()
                },
                stop: function(t, r) {
                    e("IFRAME", this).show(),
                    e.jqm.dialogResized(n)
                }
            }))
        },
        dialogShow: function(t, n) {
            var r = t.w.prependTo("BODY"),
            i = r.find("IFRAME"),
            s = (new Spinner).spin(e('[data-role="spin"]', r).get(0));
            return t.c.overlay > 0 && t.o.prependTo("BODY"),
            r.fadeIn(function() {
                n.beforeLoad && n.beforeLoad(r, i),
                i.load(function() {
                    try {
                        r.find('[data-role="title"]').text(i.get(0).contentWindow.document.title)
                    } catch(t) {}
                    e.jqm.dialogResized(r),
                    s.stop(),
                    n.load && n.load(r, i),
                    e.jqm.focusFunc(r)
                }).attr("src", n.url)
            }),
            r.position({
                my: "center",
                at: "center",
                of: window
            }),
            !0
        },
        dialogHide: function(e, t) {
            return e.w.remove(),
            e.o && e.o.remove(),
            !0
        },
        dialogResized: function(t) {
            var n = t.height() - e(".title", t).outerHeight();
            e(".dialog-content, IFRAME", t).height(n)
        }
    }),
    e.extend({
        messageBox: function(n) {
            var r = e.extend(!0, {},
            t, e.getI18N("my.extend.dialog")),
            i = {
                title: undefined,
                content: "",
                windowClass: "msgBox",
                icon: "information",
                buttons: "OK",
                overlay: undefined,
                callback: undefined,
                drag: {
                    dragable: !0
                },
                resize: {
                    resizable: !0,
                    minWidth: undefined,
                    maxWidth: undefined,
                    minHeight: undefined,
                    maxHeight: undefined
                }
            };
            e.extend(!0, i, n);
            if (!i.title) {
                var s = i.icon.toLowerCase();
                s === "information" ? i.title = r.InfomationTitle: s === "question" ? i.title = r.QuestionTitle: s === "correct" ? i.title = r.CorrectTile: s === "warning" ? i.title = r.WarningTitle: s === "error" ? i.title = r.ErrorTitle: i.title = r.DefaultTitle
            }
            var o = e("<DIV></DIV>").addClass(i.windowClass),
            u = 0;
            e(".jqm-init").each(function() {
                var t = parseInt(e(this).css("z-Index"), 10);
                t > u && (u = t)
            }),
            u !== 0 && o.css({
                "z-Index": u + 2
            });
            var a = o.jqm({
                modal: !0,
                overlay: i.overlay,
                onHide: function(e) {
                    return e.w.remove(),
                    e.o && e.o.remove(),
                    !0
                },
                onShow: function(t) {
                    var n = t.w;
                    return e.jqm.messageBoxHtmlBuilder(n, i),
                    n.appendTo("BODY"),
                    t.c.overlay > 0 && t.o.prependTo("body"),
                    n.fadeIn(function() {
                        e.jqm.focusFunc(n)
                    }),
                    n.position({
                        my: "center",
                        at: "center",
                        of: window
                    }),
                    !0
                }
            });
            return a.jqmShow(),
            a
        },
        alert: function(t, n, r, i) {
            e.messageBox({
                icon: r ? r: undefined,
                buttons: "OK",
                title: t,
                content: n,
                callback: i
            })
        },
        confirm: function(t, n, r) {
            e.messageBox({
                icon: "question",
                buttons: "YesNo",
                title: t,
                content: n,
                callback: r
            })
        },
        showDialog: function(t) {
            var n = {
                title: "标题",
                url: "",
                windowClass: "jqmWindow",
                width: 400,
                height: 300,
                modal: !1,
                overlay: undefined,
                beforeLoad: undefined,
                load: undefined,
                callback: undefined,
                drag: {
                    dragable: !0
                },
                resize: {
                    resizable: !0,
                    minWidth: undefined,
                    maxWidth: undefined,
                    minHeight: undefined,
                    maxHeight: undefined
                }
            };
            e.extend(!0, n, t);
            var r = e("<DIV></DIV>").addClass(n.windowClass).width(n.width).height(n.height),
            i = 0;
            return e(".jqm-init").each(function() {
                var t = parseInt(e(this).css("z-Index"), 10);
                t > i && (i = t)
            }),
            i !== 0 && $win.css({
                "z-Index": i + 2
            }),
            e.jqm.dialogHtmlBuilder(r, n),
            r.jqm({
                modal: n.modal,
                overlay: n.overlay,
                onHide: function(t) {
                    e.jqm.dialogHide(t, n)
                },
                onShow: function(t) {
                    e.jqm.dialogShow(t, n)
                }
            }).jqmShow()
        },
        showRealTimeNotice: function(t, n) {
            var r = e(['<div class="real-time-notice ">', '<i class="real-time-notice-' + (n ? n: "succeed") + '"></i>', '<div class="real-time-notice-box">', '<div class="real-time-notice-content">' + t + "</div>", '<s class="real-time-notice-middle"></s>', "</div>", "</div>"].join("")).appendTo("BODY").click(function() {
                e(this).remove()
            });
            r.fadeIn(200,
            function() {
                setTimeout(function() {
                    r.fadeOut(400,
                    function() {
                        r.remove()
                    })
                },
                1200)
            })
        }
    })
} (jQuery),
function(e) {
    e.fn.dropDownList = function(t, n, r) {
        var i = e(this).height(),
        s = e(this);
        s.hover(function() {
            s.stop().animate({
                height: s.find(t).height()
            },
            r)
        },
        function() {
            s.stop().animate({
                height: i
            },
            r)
        }),
        s.find(n).click(function() {
            s.height() < s.find(t).height() ? s.stop().animate({
                height: s.find(t).height()
            },
            r) : s.stop().animate({
                height: i
            },
            r)
        })
    }
} (jQuery),
function(e) {
    e.fn.photoCarousel = function(t, n, r) {
        function E() {
            h == l - 1 ? d = -1 : h == 0 && (d = 1),
            h += d,
            c = h * -1 * s,
            u.animate({
                left: c
            },
            n),
            f.children("em").eq(h).addClass(r).siblings().removeClass(r)
        }
        var i = e(this),
        s = i.width(),
        o = i.height(),
        u = i.children("ul"),
        a = u.children("li"),
        f = i.children("div").children("span"),
        l = a.length,
        c,
        h = c = 0,
        p = null,
        d = 1;
        if (l > 2) {
            var v = a.last().clone();
            a.last().remove();
            var m = u.children("li").length,
            g = u.children("li").toArray(),
            y = parseInt(Math.random() * m);
            u.children("li").each(function(e) {
                u.append(u.children("li").eq(y)),
                y = parseInt(Math.random() * m)
            }),
            u.append(v)
        }
        i.children("ul").css({
            position: "absolute",
            left: "0px",
            top: "0",
            width: s * l
        }),
        u.children("li").css({
            width: s,
            height: o
        });
        var b = "";
        for (var w = 0; w < l; w++) b += "<em></em>";
        f.html(b),
        f.children("em").eq(0).addClass("on"),
        l > 1 && (p = setInterval(E, t), f.children("em").hover(function() {
            clearInterval(p),
            h = e(this).index(),
            c = h * -1 * s,
            u.animate({
                left: c
            },
            n),
            f.children("em").eq(h).addClass("on").siblings().removeClass("on")
        },
        function() {
            h = e(this).index(),
            p = setInterval(E, t)
        }), u.children("li").hover(function() {
            clearInterval(p)
        },
        function() {
            p = setInterval(E, t)
        }))
    }
} (jQuery),
function(e) {
    e.fn.ListTransitions = function(t, n, r, i) {
        var s = Math.floor(1 + Math.random() * 3);
        e(this).parent().each(function(t) {
            var n = e(this).children("li"),
            r = n.length,
            i = Math.ceil(r / 6),
            o = s;
            if (i == 1) n.eq(o - 1).attr("data-animation", "yes"),
            n.eq(o - 1 + 3).attr("data-animation", "yes");
            else for (var u = 0; u < i; u++) {
                var a = 6 * u;
                n.eq(o - 1 + a * 1).attr("data-animation", "yes"),
                n.eq(o - 1 + 3 + a * 1).attr("data-animation", "yes"),
                t % 2 == 0 ? o == 3 ? o = 1 : o += 1 : o == 1 ? o = 3 : o -= 1
            }
            s == 3 ? s = 1 : s += 1
        }),
        e(this).each(function() {
            function p() {
                s.find(t).stop().animate({
                    "margin-top": 5,
                    "margin-right": 5,
                    "margin-bottom": 5,
                    "margin-left": 5,
                    width: u - 10,
                    height: o - 10
                },
                300),
                s.find(n).stop().animate({
                    top: -5,
                    left: -5
                },
                300)
            }
            function d() {
                s.find(t).stop().animate({
                    "margin-top": 0,
                    "margin-right": 0,
                    "margin-bottom": 0,
                    "margin-left": 0,
                    width: u,
                    height: o
                },
                300),
                s.find(n).stop().animate({
                    top: 0,
                    left: 0
                },
                300)
            }
            var s = e(this),
            o = e(this).height(),
            u = e(this).width(),
            a = e(this).find(n),
            f = e(this).find(r),
            l = null,
            c = e(this).attr(i),
            h = e(this).attr("data-animation");
            e(this).find(n).mousedown(function() {
                p()
            }).mouseup(function() {
                d()
            }).mouseout(function() {
                d()
            });
            if (f.length > 0 && c != undefined && h == "yes") {
                var v = e.trim(c.split(",")[0]),
                m = c.split(",")[1] * 1,
                g = c.split(",")[2] * 1,
                y = c.split(",")[4] * 1 + g,
                b = c.split(",")[3] * 1 + g;
                v == "top" ? f.show().css({
                    top: o * -1,
                    left: 0
                }) : v == "right" ? f.show().css({
                    left: u,
                    top: 0
                }) : v == "bottom" ? f.show().css({
                    top: o,
                    left: 0
                }) : v == "left" && f.show().css({
                    left: u * -1,
                    top: 0
                });
                function w() {
                    var e = parseInt(a.css("top")),
                    t = parseInt(a.css("left")),
                    n,
                    r;
                    v == "top" ? (e > 0 ? (n = 0, r = b) : (n = o, r = y), a.css("left", 0).animate({
                        top: n
                    },
                    g), f.css("left", 0).animate({
                        top: n - o
                    },
                    g), clearInterval(l), l = setInterval(w, r)) : v == "right" ? (t < 0 ? (n = 0, r = b) : (n = u * -1, r = y), a.css("top", 0).animate({
                        left: n
                    },
                    g), f.css("top", 0).animate({
                        left: n + u
                    },
                    g), clearInterval(l), l = setInterval(w, r)) : v == "bottom" ? (e < 0 ? (n = 0, r = b) : (n = o * -1, r = y), a.css("left", 0).animate({
                        top: n
                    },
                    g), f.css("left", 0).animate({
                        top: n + o
                    },
                    g), clearInterval(l), l = setInterval(w, r)) : v == "left" && (t == u ? (n = 0, r = b) : (n = u, r = y), a.css("top", 0).animate({
                        left: n
                    },
                    g), f.css("top", 0).animate({
                        left: n - u
                    },
                    g), clearInterval(l), l = setInterval(w, r))
                }
                l = setInterval(w, m),
                e(this).hover(function() {
                    clearInterval(l),
                    v == "top" ? (a.stop().animate({
                        top: 0
                    },
                    300), f.stop().animate({
                        top: 0 - o
                    },
                    300)) : v == "right" ? (a.stop().animate({
                        left: 0
                    },
                    300), f.stop().animate({
                        left: u
                    },
                    300)) : v == "bottom" ? (a.stop().animate({
                        top: 0
                    },
                    300), f.stop().animate({
                        top: o
                    },
                    300)) : v == "left" && (a.stop().animate({
                        left: 0
                    },
                    300), f.stop().animate({
                        left: 0 - u
                    },
                    300))
                },
                function() {
                    l = setInterval(w, b)
                })
            }
        })
    }
} (jQuery),
function(e) {
    e.fn.maskAnimation = function(t, n) {
        e(this).each(function() {
            function u() {
                r.find(".maskBox").stop().animate({
                    "margin-top": t,
                    "margin-right": t,
                    "margin-bottom": t,
                    "margin-left": t,
                    width: o - t * 2,
                    height: s - t * 2
                },
                n),
                r.find(".maskLayer").stop().animate({
                    top: t * -1,
                    left: t * -1
                },
                300)
            }
            function a() {
                r.find(".maskBox").stop().animate({
                    "margin-top": 0,
                    "margin-right": 0,
                    "margin-bottom": 0,
                    "margin-left": 0,
                    width: o,
                    height: s
                },
                n),
                r.find(".maskLayer").stop().animate({
                    top: 0,
                    left: 0
                },
                n)
            }
            var r = e(this),
            i = r.html(),
            s = r.height(),
            o = r.width();
            e(this).css({
                overflow: "hidden"
            }),
            r.html("<div class='maskBox'><div class='maskLayer clearfix'>" + i + "</div></div>"),
            r.find(".maskBox").css({
                position: "relative",
                width: o,
                height: s,
                margin: 0,
                padding: 0,
                overflow: "hidden"
            }),
            r.find(".maskLayer").css({
                position: "absolute"
            }).css({
                left: 0,
                top: 0,
                width: o,
                height: s,
                margin: 0,
                padding: 0,
                overflow: "hidden"
            }),
            r.find(".maskBox").mousedown(function() {
                u()
            }).mouseup(function() {
                a()
            }).mouseout(function() {
                a()
            })
        })
    }
} (jQuery),
function(e) {
    e.fn.tabControl = function(t, n, r, i) {
        var s = e(this),
        o,
        u = s.find(t).find(n),
        a = s.find(r);
        u.mouseenter(function() {
            o = e(this).index(),
            u.removeClass(i).eq(o).addClass(i),
            a.hide().eq(o).show()
        })
    }
} (jQuery),
function(e) {
    e.fn.updateOrderInput = function(t) {
        e(this).each(function() {
            function d() {
                var t = [];
                for (var n = 0; n < c.length; n++) {
                    var i = e.trim(c[n]);
                    i != "" && t.push(n * 1 + 1)
                }
                if (t.length == 0 && c.length > 1 || r.val() == "") r.val(""),
                a.show()
            }
            function v() {
                clearInterval(h),
                r.val() != "" ? a.hide() : a.show(),
                i.css("right", n.scrollLeft() * -1);
                var t = r.val();
                c.length = 0,
                c = t.split("\n");
                var s = c.length,
                o = "";
                for (var m = 0; m < s; m++) {
                    var g = e.trim(c[m]);
                    g == "" ? o += "<li></li>": o += "<li><a href='javascript:void(0)'></a></li>"
                }
                i.html(o),
                s <= f ? r.height(l) : (n.css("overflow-y", "auto"), r.height(u.slice(0, -2) * 1 * s), s > p && n.scrollTop((s - f) * u.slice(0, -2) * 1), p = s);
                var y = n.find("li");
                y.unbind("click"),
                y.click(function() {
                    var t = y.index(e(this)),
                    i,
                    s = "";
                    c.splice(t, 1),
                    i = c.length;
                    for (var o = 0; o < i; o++) o == 0 ? s += c[o] : s += "\n" + c[o];
                    r.val(s),
                    n.scrollLeft(0),
                    v(),
                    d(),
                    r.trigger("change"),
                    r.focus()
                }),
                y.each(function() {
                    var t = e(this).html(),
                    n = e(this).index();
                    t == "" && y.eq(n).unbind("click,change")
                })
            }
            var n = e(this),
            r = n.find("textarea"),
            i = n.find("ul"),
            s = n.height(),
            o = n.width(),
            u = r.css("line-height"),
            a = n.find("p"),
            f = parseInt(s / u.slice(0, -2)),
            l = f * u.slice(0, -2),
            c = [],
            h = null,
            p = 0;
            a.text(r.attr("title")),
            r.val() != "" ? a.hide() : a.show(),
            r.focus();
            if (t) v(),
            n.scrollLeft(0),
            r.focus();
            else {
                var m = function() {
                    i.hide()
                };
                r.unbind("keydown", m).bind("keydown", m);
                var g = function() {
                    h = setTimeout(function() {
                        v()
                    },
                    500)
                };
                r.unbind("paste", g).bind("paste", g);
                var y = function() {
                    v(),
                    i.show()
                };
                r.unbind("keyup mouseup", y).bind("keyup mouseup", y);
                var b = function() {
                    event.keyCode === 13 && n.scrollLeft(0)
                };
                r.unbind("keyup", b).bind("", b),
                a.click(function() {
                    r.val() != "" && a.hide(),
                    r.focus()
                }),
                r.focus(function() {}).blur(function() {
                    r.val() == "" ? a.show() : a.hide()
                })
            }
        })
    }
} (jQuery);